Uygulamanıza alt alan ekleme

Geçerli XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
XR Kulaklıklar
Kablolu XR Gözlükler

Alt alan, uygulamanızdaki 3D alanın bir bölümüdür. Bu bölümde 3D modeller yerleştirebilir, 3D düzenler oluşturabilir ve normalde 2D olan içeriklere derinlik katabilirsiniz. Bir alt alan yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Ev Alanı'nda veya XR olmayan cihazlarda, bu alt alandaki tüm kodlar yoksayılır.

Düzeninizi oluşturmak ve 2D içerikleri 3D alana yerleştirmek için SpatialPanel, SpatialRow ve SpatialColumn gibi alt alan composable'larını kullanabilirsiniz. 3D içerik yerleştirmek için uygun Subspace Composable'ı kullanın. Örneğin, 3D modeller için SceneCoreEntity, stereo görüntüler için SpatialExternalSurface kullanın. Orbiter veya SpatialDialog gibi bazı XR bileşenleri, 2D kullanıcı arayüzü hiyerarşinizin herhangi bir yerinde kullanılabilen standart 2D composable'lardır. Ancak SubspaceComposable, uygulamanızın alt alanında çağrılmalıdır. Bunu yapmak için Subspace alt alanı oluşturulabilir öğesini kullanın.

Alt alan hiyerarşileri hakkında

En üst düzey Subspace, uygulamanız tarafından çağrılan en dıştaki alt uzaydır. Subspace'e yapılan her çağrı, yeni ve bağımsız bir Spatial UI hiyerarşisi oluşturur. İçine yerleştirildiği üst öğelerin uzamsal konumunu, yönünü veya ölçeğini devralmaz.Subspace

SpatialPanel, Orbiter, SpatialPopup veya başka bir bileşenin içine yerleştirilmiş ya da iç içe yerleştirilmiş bir Subspace oluşturmak için PlanarEmbeddedSubspace kullanın.

PlanarEmbeddedSubspace ile Subspace arasında iki temel fark vardır:

  • Bu işlevler, çağrıldıkları 2D düzende yer alır. Bu, alt alanın yüksekliğinin ve genişliğinin 2 boyutlu üst düzeninin yüksekliği ve genişliği ile sınırlanacağı anlamına gelir.
  • Bunlar, çağrıldıkları öğenin alt öğeleri gibi davranır. Bu, bir SpatialPanel içinde iç içe yerleştirilmiş bir alt uzayı çağırdığınızda bu alt uzayın, çağrıldığı SpatialPanel öğesinin alt öğesi olduğu anlamına gelir.

PlanarEmbeddedSubspace'ın bu davranışları sayesinde aşağıdaki gibi özellikler kullanılabilir:

  • Çocuğu üst öğeyle birlikte taşıma
  • Çocuğun konumunu, uzaklık kullanılarak telafi etme SubspaceModifier
  • 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

Bir alt alan için düzenleri uyarlama

Android XR'da uygulamanızın düzeni, varsayılan olarak Tam Alan Modu'nda Subspace'ın VolumeConstraints ile sınırlıdır. Bu nedenle, kullanıcının görebileceği alan miktarını göz önünde bulundurmalı ve düzeninizi buna göre ayarlamalısınız. recommendedContentBoxInFullSpace, içeriğin kullanıcının görüş alanına yerleştirilebilmesi için ActivitySpace içindeki sınırlayıcı kutunun belirli boyutlarını sağlar.

Uygulamanızın ana içeriği bu kutunun içinde yer almalıdır. Önerilen sınırları aşması gereken içeriğiniz varsa kullanıcıları başlarını hareket ettirerek alanı keşfetmeye teşvik eden bir düzen kullanabilirsiniz. recommendedContentBoxInFullSpace öğesinin varsayılan kısıtlaması, SubspaceModifier.requiredSizeIn gibi özel bir boyuta dayalı değiştirici uygulanarak geçersiz kılınabilir. Sınırsız davranış için allowUnboundedSubspace = true değerini ayarlayın.

Gerekli boyutları almak için mevcut oturum kullanılarak recommendedContentBoxInFullSpace çağrısı yapılır. Aşağıdaki örneğe bakın:

val session = LocalSession.current
session?.scene?.activitySpace?.recommendedContentBoxInFullSpace

Uygulamanıza alt alan ekleme

Aşağıdaki kod örneğinde, uygulamanıza Subspace ve PlanarEmbeddedSubspace öğelerinin nasıl ekleneceği gösterilmektedir:

setContent {
    // This is a top-level subspace
    Subspace {
        SpatialPanel {
            MyComposable()
        }
    }
}

@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}

@Composable
private fun PrimaryPane() {
    // This is an embedded subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in the top-level Subspace
    PlanarEmbeddedSubspace {
        SpatialPanel {}
    }
}

Daha fazla bilgi için Subspace ve PlanarEmbeddedSubspace ile ilgili tam referans belgelerine bakın.