我有关于删除SCNNode的问题 我有一个创建SCNNode的函数,当Node准备就绪时我将其添加:
scene.rootNode.addChildNode(node)
然后我使用该函数创建一个新的SCNNode,并且喜欢删除旧的SCNNode并添加新的,不幸的是SCNNode.removeFromParentNode()
不会删除旧的:
func cleanUpAndAdd(){
for node in scene.rootNode.childNodes{
if node.name == "object" {
node.removeFromParentNode()
scene.rootNode.addChildNode(object)
object.name = "object"
} else {
scene.rootNode.addChildNode(object)
object.name = "object"
}
}
}
它只是添加和添加,永远不会删除......
我错过了什么?
答案 0 :(得分:2)
请注意SCNNode.childNodes
是一个集合(数组),因此根据Cocoa约定,在枚举时不应尝试改变它(SCNNode.addChildNode(_:)
)。如果这样做,SceneKit会注意到生成运行时异常,但行为未定义。
答案 1 :(得分:0)
假设您已设置节点名称,该代码是正确的。你没有向我们展示这一部分。如何添加"否则打印node.name"?
答案 2 :(得分:0)
因此。经过数小时的故障排除后,我意识到我正在制作的SCNGeometry还包含了之前SCNGeometry的SCNGeometry数据源。
所以渲染和移除是正确的。