如何解决单击按钮Swift
我是第一次构建ARkit项目,首先要做的是,我必须在ARSCNView中显示3D Sphere。然后单击按钮时,球体应消失并在其位置显示3D立方体。
我在考虑我的代码:
@IBOutlet weak var sceneView: ARSCNView!
var objectNode: SCNNode?
var objectScene: SCNScene?
objectScene = SCNScene(named: "sphere.dae")
objectNode = objectScene!.rootNode
sceneView.scene.rootNode.addChildNode(objectNode!)
这是按钮的代码:
@IBAction func cubeButtonClicked(_ sender: UIButton) {
sceneView.scene.rootNode.enumerateChildNodes { (node,stop) in
node.removeFromParentNode()
}
objectScene = SCNScene(named: "cube.dae")
objecteNode = objectScene!.rootNode
sceneView.scene.rootNode.addChildNode(objecteNode!)
}
我正遇到此错误
[SceneKit] Error: removing the root node of a scene from its scene is not allowed
我做错什么了吗?
解决方法
实际上,错误可以准确说明是什么原因造成的。
已编辑---尝试以下两种方法之一
- 使用以下代码来避免删除
pointOfView
即您的SCNCamera
。
sceneView.scene.rootNode.enumerateChildNodes { (node,_) in
if node == sceneView.pointOfView {return}
node.removeFromParentNode()
}
- 如果仅要删除一个节点(在您的情况下为
sphereNode
),则无需使用枚举方法。只需持有对该节点的引用,并在需要时将其删除。
sphereNode.removeFromParentNode()
,
我在上面的代码中缺少的是我必须进行删除并添加两个同步任务。由于Delete函数已放入闭包(异步任务)。因此添加功能将在删除之前执行。 到那时,错误将消失。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。