SceneCore-Entitäten

XR‑Geräte, für die der Leitfaden gilt
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für die folgenden Arten von XR-Geräten zu entwickeln.
XR-Headsets
Kabelgebundene XR-Datenbrille

Ein SceneCoreEntity ist ein Subspace-Composable, das die Bibliotheken Jetpack SceneCore und Compose for XR verbindet, sodass Sie mit SceneCore erstellte Entitäten in Compose-Layouts verwenden können. So können Sie untergeordnete Entitäten und benutzerdefinierte Komponenten erstellen, während Compose die Größe, Position, Neuzuordnung, das Hinzufügen von untergeordneten Elementen und das Anwenden von Modifikatoren auf diese Entitäten ermöglicht.

SceneCore-Entität verwenden, um Entitäten in Ihrem Layout zu platzieren

Im folgenden Beispiel wird gezeigt, wie Sie eine SceneCore-Entität verwenden, um Entitäten in Ihrem Layout zu platzieren:

val virtualPixelDensity = session.scene.virtualPixelDensity

Subspace {
    SceneCoreEntity(
        modifier = SubspaceModifier.offset(x = 50.dp),
        factory = {
            SurfaceEntity.create(
                session = session,
                pose = Pose.Identity,
                stereoMode = SurfaceEntity.StereoMode.MONO
            )
        },
        update = { entity ->
            // Compose state changes may be applied to the SceneCore entity here.
            entity.stereoMode = SurfaceEntity.StereoMode.SIDE_BY_SIDE
        },
        sizeAdapter =
            object : SceneCoreEntitySizeAdapter<SurfaceEntity> {
                override fun onLayoutSizeChanged(
                    entity: SurfaceEntity,
                    size: IntVolumeSize
                ) {
                    val extents = FloatSize2d(
                        size.width.toFloat(),
                        size.height.toFloat()
                    )
                    entity.shape = SurfaceEntity.Shape.Quad(extents)
                }
            },
    ) {
        // Content here will be children of the SceneCoreEntity
        // in the scene graph.
    }
}

Wichtige Punkte zum Code

  • Factory-Block: Im Factory-Block initialisieren Sie die zugrunde liegende SurfaceEntity-Entität aus SceneCore.
  • Update-Block: Verwenden Sie den Update-Block, um die Attribute der Entität als Reaktion auf Änderungen im Compose-Status zu ändern.
  • Größenanpassung: Die sizeAdapter gibt die Abmessungen der Entität an das Compose-Layoutsystem zurück.

Weitere Informationen