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

问题描述 投票:7回答:2

我有以下代码(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 文件,并将其添加到场景中。从我在模拟器(和设备)中看到的情况来看,它加载得很好。

我应该怎么做才能防止错误信息的发生?

ios swift scenekit
2个回答
13
投票

根节点是特殊的 -- 它们不能从它们的场景中解开亲缘关系并移动到新的场景中。你需要把一个子节点或子孙节点从你的 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)
}
© www.soinside.com 2019 - 2024. All rights reserved.