Thêm không gian con vào ứng dụng

Không gian con là một phân vùng của không gian 3D trong ứng dụng, nơi bạn có thể đặt các mô hình 3D, tạo bố cục 3D và thêm chiều sâu vào 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. Trong Không gian nhà hoặc trên các thiết bị không phải XR, mọi mã trong không gian con đó sẽ bị bỏ qua.

Bạn có thể sử dụng @SubspaceComposable như VolumeSpatialPanel để đặt mô hình 3D. Một số thành phần XR như Orbiter hoặc SpatialDialog là các thành phần kết hợp 2D tiêu chuẩn có thể được sử dụng ở bất kỳ đâu trong hệ phân cấp giao diện người dùng 2D, nhưng SubspaceComposable phải được gọi trong không gian con của ứng dụng. Để làm việc này, bạn sẽ sử dụng thành phần kết hợp Subspace.

Giống như mọi thành phần kết hợp khác, bạn có thể gọi Subspace trực tiếp trong hệ phân cấp giao diện người dùng 2D. Tuy nhiên, điều quan trọng là bạn phải nắm được ý nghĩa của vị trí trong hệ phân cấp mà bạn gọi Subspace.

Giới thiệu về hệ phân cấp không gian con

Không gian con cấp cao nhất là không gian con ngoài cùng do ứng dụng của bạn gọi. Không gian con này có ranh giới vô hạn một cách hiệu quả và thường là nơi bạn sẽ đặt bố cục không gian và SpatialPanel của ứng dụng.

Tuy nhiên, nếu bạn lồng một không gian con khác bên trong hệ phân cấp giao diện người dùng 2D trong một bảng điều khiển nằm trong không gian con cấp cao nhất, thì không gian con được lồng đó sẽ hoạt động theo cách khác.

Không gian con lồng nhau có hai điểm khác biệt chính so với Subspace cấp cao nhất:

  • 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 trong đó. Điều này có nghĩa là nếu bạn gọi một thành phần kết hợp Subspace được lồng bên trong SpatialPanel, thì không gian con đó sẽ là thành phần con của SpatialPanel được gọi trong đó.

Những hành vi này của không gian con lồng nhau cho phép các chức năng như:

  • Di chuyển phần tử con bằng thực thể mẹ
  • Bù vị trí của thành phần con bằng cách sử dụng độ dời SubspaceModifier
  • Trình bày một đối tượng 3D di chuột qua 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

Thêm không gian con vào ứng dụng

Mã ví dụ sau đây cho biết cách thêm không gian con cấp cao nhất và lồng nhau vào ứng dụng.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
        // This is a top-level subspace
        Subspace {
            SpatialPanel {
                MyComposable()
            }
        }
    }
}
@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}
@Composable
private fun PrimaryPane() {
      ...
    // This is a nested subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in a top-level Subspace
    Subspace {
        ObjectInAVolume(show3DObject)
    }
      ...
}