المساحة الفرعية هي قسم من المساحة الثلاثية الأبعاد داخل تطبيقك حيث يمكنك وضع نماذج ثلاثية الأبعاد وإنشاء تصاميم ثلاثية الأبعاد وإضافة عمق إلى المحتوى ثنائي الأبعاد. لا يتم عرض المساحة الفرعية إلا عند تفعيل ميزة "الصوت المكاني". في "المساحة الرئيسية" أو على الأجهزة غير المزوّدة بتقنية XR، يتم تجاهل أي رمز ضمن هذا الفضاء الفرعي.
يمكنك استخدام عناصر قابلة للتجميع في المساحات الفرعية، مثل
Volume
وSpatialPanel
ل
وضع النماذج الثلاثية الأبعاد. إنّ بعض مكوّنات الواقع المعزّز، مثل Orbiter
أو SpatialDialog
، هي عناصر قابلة للتجميع ثنائية الأبعاد يمكن
استخدامها في أي مكان في التسلسل الهرمي لواجهة المستخدم ثنائية الأبعاد، ولكن يجب استخدام
SubspaceComposable
في المساحة الفرعية لتطبيقك. لإجراء ذلك، استخدِم العنصر القابل للتجميع ApplicationSubspace
أو العنصر القابل للتجميع Subspace
.
كما يوحي الاسم، يجب أن يحتوي العنصر ApplicationSubspace
المركّب على كل المحتوى المكاني في تطبيقك. إنّ العنصر القابل للتجميع
Subspace
مثالي لتضمين قسم من المساحة الثلاثية الأبعاد
في مستوى أعلى من التسلسل الهرمي الحالي لواجهة المستخدم في تطبيقك.
كما هو الحال مع أي عنصر قابل للتجميع آخر، يمكنك استدعاء
Subspace
مباشرةً في التدرّج الهرمي لواجهة المستخدم ثنائية الأبعاد. ومع ذلك، من
المهم أن تكون على دراية بالنتائج المترتبة على مكان استدعاء
Subspace
في التسلسل الهرمي.
لمحة عن تسلسلات المساحات الفرعية الهرمية
المساحة الفرعية ذات المستوى الأعلى هي المساحة الفرعية الخارجية التي يستدعيها تطبيقك. استخدِم العنصر القابل للتجميع
ApplicationSubspace
ل
المساحة الفرعية ذات المستوى الأعلى، ولكن إذا كنت تستخدِم العنصر القابل للتجميع "المساحة الفرعية" فقط في
تطبيقك، سيكون العنصر القابل للتجميع Subspace
الخارجي هو المساحة الفرعية ذات المستوى الأعلى. بشكلٍ default، يكون هذا الفضاء الفرعي من المستوى الأعلى محدودًا بالمساحة المقترَحة لعرض
التطبيق، وهو عادةً ما يكون المكان الذي تضع فيه التصميم المكاني لتطبيقك و
SpatialPanel
. إذا كنت بحاجة إلى تغيير حدود
الفضاء الفرعي من المستوى الأعلى، نقْل ملفًا مختلفًا من
[VolumeConstraints
][VolumeConstraints] إلى
ApplicationSubspace
.
ومع ذلك، في حال تداخل مساحة فرعية أخرى داخل تسلسل هرمي لواجهة مستخدم ثنائية الأبعاد في لوحة مضمّنة في المساحة الفرعية ذات المستوى الأعلى، سيختلف سلوك المساحة الفرعية المُدمجة.
هناك اختلافان رئيسيان بين المساحات الفرعية المُدمجة والمساحات Subspace
من المستوى الأعلى:
- وتشارك هذه العناصر في التخطيط ثنائي الأبعاد الذي يتمّ استدعاؤها فيه. وهذا يعني أنّه سيتم تقييد ارتفاع المساحة الفرعية وعرضه بالارتفاع والعرض لتنسيقها الرئيسي ثنائي الأبعاد.
- وتتصرف هذه العناصر كعناصر فرعية للكيان الذي يتم استدعاؤها فيه. وهذا يعني أنّه،
في حال استدعاء عنصر
Subspace
قابل للتجميع مُدمَج داخلSpatialPanel
، فإنّ المساحة الفرعية هذه هي عنصر تابع لعنصرSpatialPanel
الذي تم استدعاؤه فيه.
توفّر سلوكيات المساحات الفرعية المُدمجة إمكانات مثل:
- نقل العنصر الثانوي مع العنصر الرئيسي
- إزاحة الموقع الجغرافي للطفل باستخدام الإزاحة
SubspaceModifier
- عرض عنصر ثلاثي الأبعاد يرفرف فوق واجهة المستخدم ثنائية الأبعاد ويطابق الارتفاع والعرض المناسبَين للمساحة في التنسيق ثنائي الأبعاد
إضافة مساحة فرعية إلى تطبيقك
يوضّح مثال الرمز البرمجي التالي كيفية إضافة مساحات فرعية من المستوى الأعلى والمُدمجة إلى تطبيقك:
setContent { // This is a top-level subspace ApplicationSubspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is a nested subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in a top-level Subspace Subspace { ObjectInAVolume(true) } }