如何删除节点并添加一个新节点Swift

时间:2017-10-04 08:05:00

标签: swift xcode scenekit arkit

我需要你的帮助。

我正在尝试删除一个节点并在解除前一节点后加载一个新节点。

实际上我可以在一个单独的函数中删除它:

sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
            node.removeFromParentNode()
        }

但在那之后我回想起“addChild”这个函数,新节点没有出现在场景中。

 func addChild(object: String){
        if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

            let path = dir.appendingPathComponent(object)

            //reading
            do {
                scene = try SCNScene(url: path)
                node = scene.rootNode

            }
            catch {/* error handling here */}
        }
        counter += 1

    }

“addChild”将数组的一个元素作为参数,计数器在每次调用func之后将指针移动到数组的另一个元素。

EX:我有一个包含两个元素的数组,我希望第一次显示的对象始终是第一个然后当我触摸对象时它将被删除并且必须调用func addChild这样,前一个元素从数组中删除,下一个元素将被加载,这要归功于将指针移动到下一个元素的计数器。

我不知道我的例子是否足够解释。 先感谢您!

1 个答案:

答案 0 :(得分:0)

修正了回想起" sceneView.scene = scene"在函数内部,每次调用函数removeChild时都从数组中删除元素。

func addChild(object:String){         如果让dir = FileManager.default.urls(for:.documentDirectory,in:.userDomainMask).first {

        let path = dir.appendingPathComponent(object)

        //reading
        do {
            scene = try SCNScene(url: path)
            node = scene.rootNode
            sceneView.scene = scene
        }
        catch {/* error handling here */}
    }


}