SceneKit – Fatal Error: unexpectedly found nil while unwrapping an Optional value when getting child node
SceneKit – Fatal Error: unexpectedly found nil while unwrapping an Optional value when getting child node
所以我试图在我的 SceneKit/Swift 项目中使用 3D 对象(.dae 1.4,使用 Cinema4D r13 导出)。我留下了提供的代码并进行了更改:
let scene = SCNScene(named: "art.scnassets/ship.dae")!
适合我的:
let scene = SCNScene(named: "art.scnassets/pyramid.dae")!
我也确实将文件导入到它应该在的项目中(在 art.scnassets 中)。我可以像默认飞船一样预览文件,所以这应该是正确的。
我也改了:
let ship = scene.rootNode.childNodeWithName("ship", recursively: true)!
再次适合我的:
let pyramide = scene.rootNode.childNodeWithName("pyramid", recursively: true)!
当我现在 运行 项目然后它崩溃并在我修改的第二行中给出以下错误。
fatal error: unexpectedly found nil while unwrapping an Optional value
我已经在其他一些帖子中看到了这个错误,但它实际上不适合我的情况,也没有帮助我。
有人知道如何解决这个问题吗?
注意
我创建了同一个项目,但使用的是 Obj-C 而不是 Swift,它没有抱怨,只是向我显示了这一点:(是的,我确定它的坐标是 0,0,0 而不是,它不是颜色)
您的 DAE 文件中可能没有名为 pyramid
的节点,因此 childNodeWithName
为 return 零,并且由于您正在强制解包 return值你崩溃。
您可以在 Xcode 中查看该文件并检查那里的节点名称以确保您的名称正确。
此外,您可能会考虑重组代码,以便在发现意外的 nil 时报告有意义的错误:
if let pyramid = scene.rootNode.childNodeWithName(...) {
...
} else {
fatalError("missing pyramid mode in scene file")
}
所以我试图在我的 SceneKit/Swift 项目中使用 3D 对象(.dae 1.4,使用 Cinema4D r13 导出)。我留下了提供的代码并进行了更改:
let scene = SCNScene(named: "art.scnassets/ship.dae")!
适合我的:
let scene = SCNScene(named: "art.scnassets/pyramid.dae")!
我也确实将文件导入到它应该在的项目中(在 art.scnassets 中)。我可以像默认飞船一样预览文件,所以这应该是正确的。
我也改了:
let ship = scene.rootNode.childNodeWithName("ship", recursively: true)!
再次适合我的:
let pyramide = scene.rootNode.childNodeWithName("pyramid", recursively: true)!
当我现在 运行 项目然后它崩溃并在我修改的第二行中给出以下错误。
fatal error: unexpectedly found nil while unwrapping an Optional value
我已经在其他一些帖子中看到了这个错误,但它实际上不适合我的情况,也没有帮助我。
有人知道如何解决这个问题吗?
注意
我创建了同一个项目,但使用的是 Obj-C 而不是 Swift,它没有抱怨,只是向我显示了这一点:(是的,我确定它的坐标是 0,0,0 而不是,它不是颜色)
您的 DAE 文件中可能没有名为 pyramid
的节点,因此 childNodeWithName
为 return 零,并且由于您正在强制解包 return值你崩溃。
您可以在 Xcode 中查看该文件并检查那里的节点名称以确保您的名称正确。
此外,您可能会考虑重组代码,以便在发现意外的 nil 时报告有意义的错误:
if let pyramid = scene.rootNode.childNodeWithName(...) {
...
} else {
fatalError("missing pyramid mode in scene file")
}