Uygulamanıza alt alan ekleme

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 @SubspaceComposable'leri 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 uzayında çağrılmalıdır. Bunun için Subspace bileşenini kullanırsınız.

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. Bu alt alanın sınırları sonsuzdur ve genellikle uygulamanızın mekansal düzenini ve SpatialPanel'i buraya yerleştirirsiniz.

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 ana 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. Yani, SpatialPanel içinde iç içe yerleştirilmiş bir Subspace bileşenini çağırırsanız bu alt alan, çağrıldığı SpatialPanel bileşeninin alt öğesi olur.

İç 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.

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)
    }
      ...
}