我有以下代码(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
文件并将其添加到场景中。从我在模拟器(和设备)中看到的,它加载正常。
我该怎么做才能防止出现错误消息?
答案 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)
}