Uygulamanıza alt alan ekleme

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

Alt uzay, uygulamanızdaki 3D alanın bir bölümüdür. Burada 3D modeller yerleştirebilir, 3D düzenler oluşturabilir ve normalde 2D olan içeriklere derinlik ekleyebilirsiniz. Alt uzay yalnızca uzamsallaştırma etkinleştirildiğinde oluşturulur. Home Space'te veya XR olmayan cihazlarda, bu alt uzaydaki tüm kodlar yoksayılır.

Üç boyutlu düzenler ve alt uzayda kullanabileceğiniz bileşenler hakkında daha fazla bilgi için üç boyutlu bileşenler başlıklı makaleyi inceleyin.

Alt alan hiyerarşileri hakkında

Üst düzey Subspace, uygulamanız tarafından çağrılan en dıştaki alt uzaydır. Bir Subspace yöntemine yapılan her çağrı, yeni ve bağımsız bir Spatial UI hiyerarşisi oluşturur. İçinde yer aldığı üst öğenin Subspace uzamsal konumunu, yönünü veya ölçeğini devralmaz.

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

PlanarEmbeddedSubspace, Subspace'dan iki önemli farkla ayrılır:

  • Çağrıldıkları 2D düzene katılırlar. Bu, alt alanın yüksekliğinin ve genişliğinin, 2D üst yerleşiminin yüksekliği ve genişliğiyle sınırlanacağı anlamına gelir.
  • Çağrıldıkları varlığın alt öğeleri olarak davranırlar. Yani SpatialPanel içinde iç içe yerleştirilmiş bir alt alan composable'ını çağırırsanız bu alt alan, çağrıldığı SpatialPanel öğesinin alt öğesi olur.

PlanarEmbeddedSubspace'ın bu davranışları, aşağıdaki gibi özellikler sağlar:

  • Alt varlığı ana varlıkla birlikte taşıma
  • Ofset kullanılarak alt öğenin konumu ofsetleniyor 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

Alt alan için düzenleri uyarlama

Android XR'da, uygulamanızın düzeni varsayılan olarak Tam Ekran Alanı modunda Subspace'nin VolumeConstraints değerine bağlıdır. Bu nedenle, kullanıcıya sunulan görünür 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 kutuya sığmalıdır. Önerilen sınırları aşması gereken içerikleriniz 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 boyuta dayalı özel bir değiştirici uygulanarak geçersiz kılınabilir. Sınırsız davranış için allowUnboundedSubspace = true değerini ayarlayın.

Gerektiğinde bu belirli boyutları almak için mevcut Session'ı kullanarak recommendedContentBoxInFullSpace yöntemini çağırın. 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'nin 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.