SceneCore 實體

適用的 XR 裝置
本指南可協助您為這類 XR 裝置打造體驗。
XR 頭戴式裝置
有線 XR 眼鏡

SceneCoreEntity 是子空間可組合函式,可橋接 Jetpack SceneCore 和 Compose for XR 程式庫,讓您在 Compose 版面配置中使用以 SceneCore 建構的實體。這可讓您建構較低層級的實體和自訂元件,同時允許 Compose 調整這些實體的大小、位置、重新設定父項、新增子項,以及套用修飾符。

使用 SceneCore 實體在版面配置中放置實體

以下範例說明如何使用 SceneCore 實體在版面配置中放置實體:

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

程式碼重點

  • 工廠區塊:工廠區塊是從 SceneCore 初始化基礎 SurfaceEntity 實體的位置。
  • 更新區塊:使用更新區塊修改實體屬性,以因應 Compose 狀態的變更。
  • 大小調整:sizeAdapter 會將實體尺寸傳回 Compose 版面配置系統。

其他資訊