Alt alan, uygulamanızda 3D modeller yerleştirebileceğiniz, 3D düzenler oluşturabileceğiniz ve aksi takdirde 2D olan içeriklere derinlik ekleyebileceğiniz 3D alanın bir bölümüdür. Alt alan yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Ana Alan'da veya XR olmayan cihazlarda, bu alt alan içindeki tüm kodlar yoksayılır.
3D model yerleştirmek için Volume
ve SpatialPanel
gibi alt alan bileşimlerini kullanabilirsiniz. Orbiter
veya SpatialDialog
gibi bazı XR bileşenleri, 2D kullanıcı arayüzü hiyerarşinizde herhangi bir yerde kullanılabilen standart 2D birleştirilebilir öğelerdir ancak SubspaceComposable
öğeleri uygulamanızın alt alanında çağrılmalıdır. Bunu yapmak için ApplicationSubspace
bileşenini veya Subspace
bileşenini kullanın.
Adından da anlaşılacağı gibi, ApplicationSubspace
bileşeni, uygulamanızın tüm uzamsallaştırılmış içeriğini içermelidir. Subspace
bileşeni, 3D alanın bir bölümünü uygulamanızın mevcut kullanıcı arayüzü hiyerarşisinin daha derinlerine yerleştirmek için idealdir.
Diğer tüm bileşenlerde olduğu gibi, Subspace
'i doğrudan 2D kullanıcı arayüzü hiyerarşinizde çağırabilirsiniz. Ancak Subspace
işlevini hiyerarşinin neresinde çağırdığınızın sonuçlarının farkında olmanız önemlidir.
Alt alan hiyerarşileri hakkında
Üst düzey alt alan, uygulamanız tarafından çağrılan en dış alt alandır. Üst düzey alt alanınız için ApplicationSubspace
bileşenini kullanın. Ancak uygulamanızda yalnızca alt alan bileşenini kullanırsanız en dış Subspace
bileşeni üst düzey alt alanınız olur. Varsayılan olarak bu üst düzey alt alan, bir uygulamayı görüntülemek için önerilen alanla sınırlıdır ve genellikle uygulamanızın mekansal düzenini ve SpatialPanel
'ı yerleştirdiğiniz yerdir. Üst düzey alt uzayın sınırlarını değiştirmeniz gerekiyorsa ApplicationSubspace
öğenize farklı bir [VolumeConstraints
][VolumeConstraints] gönderin.
Ancak, üst düzey alt uzayda bulunan bir panelde 2D kullanıcı arayüzü hiyerarşisinin içine başka bir alt alan yerleştirirseniz bu iç içe yerleştirilmiş alt alan farklı davranır.
İç içe yerleştirilmiş alt alanların üst düzey Subspace
ile iki temel farkı vardır:
- Bu öğeler, çağrıldıkları 2D düzene katılır. Bu, alt uzayın yüksekliğinin ve genişliğinin 2D üst düzeninin yüksekliği ve genişliğiyle sınırlı olacağı anlamına gelir.
- Bu işlevler, çağrıldıkları öğenin alt öğeleri gibi davranır. Bu, bir
SpatialPanel
içine yerleştirilmişSubspace
bileşenini çağırırsanız bu alt uzayın, çağrıldığıSpatialPanel
öğesinin alt öğesi olduğu anlamına gelir.
İç içe yerleştirilmiş alt uzayın bu davranışları aşağıdaki gibi özellikleri etkinleştirir:
- Alt öğeyi üst öğeyle taşıma
- Ofset
SubspaceModifier
kullanarak çocuğun konumunu kaydırma - 2D kullanıcı arayüzünüzün üzerinde duran ve 2D düzendeki uygun alanın yüksekliği ve genişliğiyle eşleşen bir 3D nesne sunma
Uygulamanıza alt alan ekleme
Aşağıdaki kod örneğinde, uygulamanıza üst düzey ve iç içe yerleştirilmiş alt alanların nasıl ekleneceği gösterilmektedir:
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) } }