เอนทิตี SceneCore

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทนี้
ชุดหูฟัง XR
แว่นตา XR แบบใช้สาย

SceneCoreEntity คือคอมโพสิเบิลพื้นที่ย่อยที่เชื่อมโยงไลบรารี Jetpack SceneCore และ Compose สำหรับ XR เพื่อให้คุณใช้เอนทิตีที่สร้างด้วย SceneCore ในเลย์เอาต์ Compose ได้ ซึ่งจะช่วยให้คุณสร้างเอนทิตีระดับต่ำกว่าและคอมโพเนนต์ที่กำหนดเองได้ ขณะเดียวกันก็อนุญาตให้ 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.
    }
}

ประเด็นสำคัญเกี่ยวกับโค้ด

  • บล็อกโรงงาน: บล็อกโรงงานคือที่ที่คุณเริ่มต้นเอนทิตี SurfaceEntity ที่สำคัญจาก SceneCore
  • บล็อกอัปเดต: ใช้บล็อกอัปเดตเพื่อแก้ไขพร็อพเพอร์ตี้ของเอนทิตีเพื่อตอบสนองต่อการเปลี่ยนแปลงในสถานะ Compose
  • การปรับขนาด: sizeAdapter จะสื่อสารขนาดของเอนทิตีกลับไปยังระบบเลย์เอาต์ Compose

ข้อมูลเพิ่มเติม