gpt4 book ai didi

swift - 在 RealityKit 中从场景中删除实体

转载 作者:行者123 更新时间:2023-12-04 15:16:07 28 4
gpt4 key购买 nike

我想从我的场景中删除一个实体。
我在 UpdateUIView 函数中创建了我的实体,如下所示:

// create anchor and model-Entity
let anchor = AnchorEntity(plane: .horizontal)

let cube = MeshResource.generateBox(size: 0.1, cornerRadius: 0.03)
let material = SimpleMaterial(color: .gray, roughness: 0.2, isMetallic: true)
let cubeEntity = ModelEntity(mesh: cube, materials: [material])

anchor.addChild(cubeEntity)
uiView.scene.addAnchor(anchor)
现在我想通过按下用户界面中的按钮来删除它。通过按下按钮,我将 var 从 false 更改为 true。
然后我在 UpdateUIView 函数里面写了:
if remove == true {
uiView.scene.removeAnchor(anchor)
}
当我按下按钮时,它会将 bool 值更改为 true,但实体不会消失。
有关如何解决此问题的任何建议?

最佳答案

更新UIView(...)
使用以下代码获得所需的结果:

import SwiftUI
import RealityKit

struct ARViewContainer: UIViewRepresentable {

@Binding var showed: Bool
let anchor = AnchorEntity(world: [0, 0,-1])

func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
let cube = MeshResource.generateBox(size: 0.8, cornerRadius: 0.02)
let material = SimpleMaterial(color: .red, isMetallic: true)
let cubeEntity = ModelEntity(mesh: cube, materials: [material])
anchor.addChild(cubeEntity)
arView.scene.addAnchor(anchor)
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {
if showed == true {
uiView.scene.removeAnchor(anchor)
}
}
}

struct ContentView : View {

@State private var show = false

var body: some View {
VStack {
ARViewContainer(showed: $show)
VStack {
Button(action: { self.show.toggle() }) {
Text("Remove Model")
}
}
}
}
}
协调员
更新您的内容不是强制性的 updateUIView(...)实例方法。相反,您可以使用 Coordinator自定义类 makeCoordinator()方法。

关于swift - 在 RealityKit 中从场景中删除实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64296143/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com