อุปกรณ์ 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
ข้อมูลเพิ่มเติม
- ดูเพิ่มโมเดล 3 มิติลงในแอปเพื่อให้เข้าใจวิธีโหลดเนื้อหา 3 มิติภายใน
SceneCoreEntityได้ดียิ่งขึ้น