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