إضافة مساحة فرعية إلى تطبيقك

المساحة الفرعية هي قسم من المساحة الثلاثية الأبعاد داخل تطبيقك حيث يمكنك وضع نماذج ثلاثية الأبعاد وإنشاء تصاميم ثلاثية الأبعاد وإضافة عمق إلى المحتوى ثنائي الأبعاد. لا يتم عرض المساحة الفرعية إلا عند تفعيل ميزة "الصوت المكاني". في "المساحة المنزلية" أو على الأجهزة غير المزوّدة بتقنية XR، يتم تجاهل أي رمز ضمن هذا الفضاء الفرعي.

يمكنك استخدام @SubspaceComposable مثل Volume وSpatialPanel ل وضع النماذج الثلاثية الأبعاد. إنّ بعض مكوّنات الواقع المعزّز، مثل Orbiter أو SpatialDialog، هي عناصر قابلة للتجميع ثنائية الأبعاد يمكن استخدامها في أي مكان في التسلسل الهرمي لواجهة المستخدم ثنائية الأبعاد، ولكن يجب استخدام SubspaceComposable في الفضاء الفرعي لتطبيقك. لإجراء ذلك، ستستخدم Subspace composable.

كما هو الحال مع أي عنصر قابل للتجميع آخر، يمكنك استدعاء Subspace مباشرةً في التدرّج الهرمي لواجهة المستخدم ثنائية الأبعاد. ومع ذلك، من المهم أن تكون على دراية بآثار المكان الذي تستدعي فيه Subspace في التسلسل الهرمي.

لمحة عن تسلسلات المساحات الفرعية الهرمية

الفضاء الفرعي من المستوى الأعلى هو الفضاء الفرعي الأقصى الذي يستدعيه تطبيقك. يمتلك هذا الفضاء الفرعي حدودًا لانهائية بشكل فعال، وهو المكان الذي ستضع فيه عادةً التصميم المكاني لتطبيقك وSpatialPanel.

ومع ذلك، في حال تداخل مساحة فرعية أخرى داخل تسلسل هرمي لواجهة مستخدم ثنائية الأبعاد في لوحة مضمّنة في المساحة الفرعية ذات المستوى الأعلى، تتصرف المساحة الفرعية المتداخلة بشكل مختلف.

هناك اختلافان رئيسيان بين المساحات الفرعية المُدمجة والمساحات Subspace من المستوى الأعلى:

  • وتشارك هذه العناصر في التخطيط ثنائي الأبعاد الذي يتمّ استدعاؤها فيه. وهذا يعني أنّه سيتم تقييد ارتفاع المساحة الفرعية وعرضه بالارتفاع والعرض لتنسيقها الرئيسي ثنائي الأبعاد.
  • وتتصرف هذه العناصر كعناصر فرعية للكيان الذي يتم استدعاؤها فيه. وهذا يعني أنّه، في حال طلب عنصر Subspace قابل للتجميع مُدمج داخل SpatialPanel، سيكون هذا العنصر الفرعي تابعًا لعنصر SpatialPanel الذي تمّ طلبه.

توفّر سلوكيات المساحات الفرعية المُدمجة إمكانات مثل:

  • نقل العنصر الثانوي مع العنصر الرئيسي
  • إزاحة الموقع الجغرافي للطفل باستخدام الإزاحة SubspaceModifier
  • عرض عنصر ثلاثي الأبعاد يحوم فوق واجهة المستخدم ثنائية الأبعاد ويطابق الارتفاع والعرض للمساحة المناسبة في التنسيق ثنائي الأبعاد

إضافة مساحة فرعية إلى تطبيقك

يوضّح مثال الرمز البرمجي التالي كيفية إضافة مساحات فرعية من المستوى الأعلى والمُدمجة إلى تطبيقك.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
        // This is a top-level subspace
        Subspace {
            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(show3DObject)
    }
      ...
}