【发布时间】:2019-10-06 03:51:33
【问题描述】:
我有主场景文件:main.scn 和其他几个带有附加 SCNNodes 的场景文件:scene1.scn、scene2.scn、scene3.scn,... 在应用程序启动时,我从 scene1.scn 加载所需的节点并添加他们给main.scn(在屏幕上显示)。在运行时,我需要从其他 sceneN.scn 文件中添加额外的节点。我尝试了两种方法,每一种都没有使用:
1) 在renderer(_, updateAtTime) 里面我只是加载需要的节点:
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
let scene2 = SCNScene(named: "game.scnassets/scene2.scn")!
let node = scene2.rootNode.childNode(withName: "nodeName", recursively: false)!
mainScene.rootNode.addChildNode(node)
}
在这种情况下,我得到错误: [SceneKit] 错误:在另一个场景 () 的渲染回调中修改了场景。这是不允许的,可能会导致崩溃
2) 在后台加载scene2 和节点,添加它以便一些nodesToShow 数组和renderer(_, updateAtTime) 内部显示数组中的节点。在这种情况下,有时我会出错:
com.apple.scenekit.scnview-renderer (17):EXC_BAD_ACCESS(代码=1,地址=0xf000000010a10c10)
您是否知道一些在运行时从其他场景文件加载和呈现节点的真正解决方案?
【问题讨论】: