RealityKit——从同一个 Reality Composer 项目加载另一个场景
RealityKit – Load another Scene from the same Reality Composer project
我使用 Xcode 的模板创建了一个增强现实项目。
Xcode 创建一个名为 Experience.rcproject
.
的文件
此项目包含一个名为 Box
的场景和一个名为 Steel Cube
的立方体。
我在 Experience.rcproject
中添加了 3 个场景,分别是 alpha
、bravo
和 delta
。
我运行这个项目。
Xcode 运行s 这两行
// Load the "Box" scene from the "Experience" Reality File
let boxAnchor = try! Experience.loadBoxX(namedFile: "Ground")
// Add the box anchor to the scene
arView.scene.anchors.append(boxAnchor)
这些行从体验文件加载 Box 场景。
加载此场景后,如何切换到另一个场景 alpha
、bravo
或 delta
而无需加载整个场景?
RealityKit 中切换来自 Reality Composer 的两个或多个场景的最简单方法是使用 removeAll()
实例方法,允许您从数组中删除所有锚点。
可以使用asyncAfter(deadline:execute:)
方法切换两个场景:
let boxAnchor = try! Experience.loadBox()
arView.scene.anchors.append(boxAnchor)
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
self.arView.scene.anchors.removeAll()
let sphereAnchor = try! Experience.loadSphere()
self.arView.scene.anchors.append(sphereAnchor)
}
或者您可以使用常规 UIButton
:
切换两个不同的 RC 场景
@IBAction func loadNewSceneAndDeletePrevious(_ sender: UIButton) {
self.arView.scene.anchors.removeAll()
let sphereAnchor = try! Experience.loadSphere()
self.arView.scene.anchors.append(sphereAnchor)
}
我使用 Xcode 的模板创建了一个增强现实项目。
Xcode 创建一个名为 Experience.rcproject
.
此项目包含一个名为 Box
的场景和一个名为 Steel Cube
的立方体。
我在 Experience.rcproject
中添加了 3 个场景,分别是 alpha
、bravo
和 delta
。
我运行这个项目。
Xcode 运行s 这两行
// Load the "Box" scene from the "Experience" Reality File
let boxAnchor = try! Experience.loadBoxX(namedFile: "Ground")
// Add the box anchor to the scene
arView.scene.anchors.append(boxAnchor)
这些行从体验文件加载 Box 场景。
加载此场景后,如何切换到另一个场景 alpha
、bravo
或 delta
而无需加载整个场景?
RealityKit 中切换来自 Reality Composer 的两个或多个场景的最简单方法是使用 removeAll()
实例方法,允许您从数组中删除所有锚点。
可以使用asyncAfter(deadline:execute:)
方法切换两个场景:
let boxAnchor = try! Experience.loadBox()
arView.scene.anchors.append(boxAnchor)
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
self.arView.scene.anchors.removeAll()
let sphereAnchor = try! Experience.loadSphere()
self.arView.scene.anchors.append(sphereAnchor)
}
或者您可以使用常规 UIButton
:
@IBAction func loadNewSceneAndDeletePrevious(_ sender: UIButton) {
self.arView.scene.anchors.removeAll()
let sphereAnchor = try! Experience.loadSphere()
self.arView.scene.anchors.append(sphereAnchor)
}