SCNNode.removeFromParentNode()和渲染循环

时间:2017-06-21 08:34:41

标签: ios scenekit scnnode

我有关于删除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"
            }               
        }            
    }

它只是添加和添加,永远不会删除......

我错过了什么?

3 个答案:

答案 0 :(得分:2)

请注意SCNNode.childNodes是一个集合(数组),因此根据Cocoa约定,在枚举时不应尝试改变它(SCNNode.addChildNode(_:))。如果这样做,SceneKit会注意到生成运行时异常,但行为未定义。

答案 1 :(得分:0)

假设您已设置节点名称,该代码是正确的。你没有向我们展示这一部分。如何添加"否则打印node.name"?

答案 2 :(得分:0)

因此。经过数小时的故障排除后,我意识到我正在制作的SCNGeometry还包含了之前SCNGeometry的SCNGeometry数据源。

所以渲染和移除是正确的。