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

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 bố cục 3D và 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. 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 các thành phần kết hợp không gian phụ 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. Để thực hiện việc này, hãy sử dụng thành phần kết hợp ApplicationSubspace hoặc thành phần kết hợp Subspace.

Như tên gọi, thành phần kết hợp ApplicationSubspace phải chứa tất cả nội dung không gian của ứng dụng. Thành phần kết hợp Subspace là lựa chọn lý tưởng để lồng một phân vùng không gian 3D sâu hơn trong hệ phân cấp giao diện người dùng hiện có của ứng dụng.

Giống như mọi thành phần kết hợp khác, bạn có thể gọi trực tiếp Subspace 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 những tác động 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. Sử dụng thành phần kết hợp ApplicationSubspace cho không gian con cấp cao nhất, nhưng nếu bạn chỉ sử dụng thành phần kết hợp Không gian con trong ứng dụng, thì thành phần kết hợp Subspace ngoài cùng sẽ là không gian con cấp cao nhất. Theo mặc định, không gian con cấp cao nhất này được giới hạn bởi không gian đề xuất để xem ứng dụng và thường là nơi bạn đặt bố cục không gian của ứng dụng và SpatialPanel. Nếu bạn cần thay đổi giới hạn của tiểu không gian cấp cao nhất, hãy truyền nhiều [VolumeConstraints][VolumeConstraints] đến ApplicationSubspace.

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 đó là một phần tử 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 thấy cách thêm không gian con cấp cao nhất và lồng nhau vào ứng dụng:

setContent {
    // This is a top-level subspace
    ApplicationSubspace {
        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(true)
    }
}