SCNKit ERROR不允许从场景中删除场景的根节点

时间:2014-07-11 17:33:22

标签: ios swift scenekit

我有以下代码(Swift定位iOS中的SceneKit):

let scnView = self.view as SCNView

let scene = SCNScene()

let levelScene = SCNScene(named: "level")
scene.rootNode.addChildNode(levelScene.rootNode)

scnView.scene = scene
scnView.backgroundColor = UIColor.grayColor()

scnView.allowsCameraControl = true
scnView.showsStatistics = true

问题是,在scene.rootNode.addChildNode(level.rootNode)我在控制台中收到以下错误:

[SCNKit ERROR] removing the root node of a scene from its scene is not allowed

我不确定为什么会出现此错误,但我正在尝试加载level.dae文件并将其添加到场景中。从我在模拟器(和设备)中看到的,它加载正常。

我该怎么做才能防止出现错误消息?

1 个答案:

答案 0 :(得分:10)

根节点很特殊 - 它们不能从场景中取消父级并移动到新场景中。您需要从levelScene中拉出子节点或后代节点才能进入游戏场景。 e.g:

let heroScene = SCNScene(named: "hero.dae")
if let heroNode = heroScene.rootNode.childNodeWithName("heroGroup", recursively: true) {
    scene.rootNode.addChildNode(heroNode)
}

或全部移动:

for node in levelScene.rootNode.childNodes as [SCNNode] {
    scene.rootNode.addChildNode(node)
}