我有以下代码(Swift中的SceneKit针对iOS)。
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
文件,并将其添加到场景中。从我在模拟器(和设备)中看到的情况来看,它加载得很好。
我应该怎么做才能防止错误信息的发生?
根节点是特殊的 -- 它们不能从它们的场景中解开亲缘关系并移动到新的场景中。你需要把一个子节点或子孙节点从你的 levelScene
移動到你的遊戲場景中,例如。
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)
}