Uygulamanıza alt alan ekleme

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

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 aksi takdirde 2D olan içeriklere derinlik katabilirsiniz. Bir alt alan yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Ana Sayfa Alanı'nda veya XR olmayan cihazlarda, bu alt alan içindeki tüm kodlar yok sayılır.

Düzeninizi oluşturmak ve 2D içeriği 3D alana yerleştirmek için SpatialPanel, SpatialRow ve SpatialColumn gibi alt alan oluşturulabilirlerini 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ı composable'ını 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 öğesine yapılan her çağrı, yeni ve bağımsız bir Spatial UI hiyerarşisi oluşturur. İçine yerleştirildiği Subspace üst öğelerin uzamsal konumunu, yönünü veya ölçeğini devralmaz.

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

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

  • Çağrıldıkları 2D düzende yer alırlar. Bu, alt alanın yüksekliğinin ve genişliğinin 2D üst yerleşiminin 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ğırırsanız 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 ana varlıkla 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'de uygulamanızın düzeni, varsayılan olarak Tam Ekran 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, ActivitySpace içindeki sınırlayıcı kutunun belirli boyutlarını sağlar. Böylece içerik, kullanıcının görüş alanına yerleştirilebilir.

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 referans belgelerinin tamamını inceleyin.