Không gian phụ là một phân vùng của không gian 3D trong ứng dụng của bạn. Trong không gian phụ, bạn có thể đặt mô hình 3D, tạo các bố cục 3D hoặc thêm chiều sâu cho nội dung 2D. Không gian con chỉ được kết xuất khi bạn bật tính năng không gian hoá. Trong Không gian chính hoặc trên các thiết bị không phải XR, mọi mã trong không gian con đó đều bị bỏ qua.
Để biết thêm thông tin về bố cục không gian và các thành phần bạn có thể sử dụng trong một không gian con, hãy xem phần thành phần không gian.
Giới thiệu về hệ thống phân cấp không gian phụ
Subspace cấp cao nhất là không gian con ngoài cùng được ứng dụng của bạn gọi.
Mỗi lệnh gọi đến một phương thức Subspace sẽ tạo ra một hệ phân cấp Giao diện người dùng không gian mới, độc lập. Nó không kế thừa vị trí không gian, hướng hoặc tỷ lệ của bất kỳ Subspace mẹ nào mà nó được lồng vào.
Để tạo một Subspace được nhúng hoặc lồng trong SpatialPanel, Orbiter, SpatialPopup hoặc thành phần khác, hãy sử dụng PlanarEmbeddedSubspace.
PlanarEmbeddedSubspace có hai điểm khác biệt chính so với Subspace:
- Các thành phần này tham gia vào bố cục 2D mà chúng được gọi. Điều này có nghĩa là chiều cao và chiều rộng của không gian con sẽ bị ràng buộc bởi chiều cao và chiều rộng của bố cục mẹ 2D.
- Các thành phần này hoạt động như thành phần con của thực thể mà chúng được gọi. Điều này có nghĩa là
nếu bạn gọi một composable không gian con lồng bên trong một
SpatialPanel, thì không gian con đó là thành phần con củaSpatialPanelmà nó được gọi.
Những hành vi này của PlanarEmbeddedSubspace cho phép các chức năng như:
- Di chuyển thực thể con cùng với thực thể mẹ
- Bù trừ vị trí của thành phần con bằng cách sử dụng độ lệch
SubspaceModifier - Trình bày một đối tượng 3D lơ lửng phía trên giao diện người dùng 2D và khớp với chiều cao và chiều rộng của không gian thích hợp trong bố cục 2D
Điều chỉnh bố cục cho không gian phụ
Trên Android XR, theo mặc định, bố cục của ứng dụng được liên kết với VolumeConstraints của Subspace ở Chế độ toàn bộ không gian. Do đó, bạn nên cân nhắc lượng không gian hiển thị mà người dùng có thể nhìn thấy và điều chỉnh bố cục cho phù hợp. recommendedContentBoxInFullSpace cung cấp các kích thước cụ thể cho hộp giới hạn bên trong ActivitySpace để nội dung có thể được đặt trong trường nhìn của người dùng.
Nội dung chính của ứng dụng phải nằm trong hộp này. Nếu bạn có nội dung phải vượt quá ranh giới được đề xuất, hãy cân nhắc bố cục khuyến khích người dùng khám phá không gian bằng cách di chuyển đầu. Bạn có thể ghi đè quy tắc ràng buộc mặc định của recommendedContentBoxInFullSpace bằng cách áp dụng một đối tượng sửa đổi dựa trên kích thước tuỳ chỉnh, chẳng hạn như SubspaceModifier.requiredSizeIn. Đối với hành vi không giới hạn, hãy đặt allowUnboundedSubspace = true.
Gọi recommendedContentBoxInFullSpace bằng Session hiện tại để lấy các kích thước cụ thể này nếu cần. Hãy xem ví dụ sau:
val session = LocalSession.current session?.scene?.activitySpace?.recommendedContentBoxInFullSpace
Thêm không gian phụ vào ứng dụng
Ví dụ về mã sau đây cho thấy cách thêm Subspace và PlanarEmbeddedSubspace vào ứng dụng:
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 {} } }
Hãy xem tài liệu tham khảo đầy đủ về Subspace và PlanarEmbeddedSubspace để biết thêm thông tin chi tiết.