我写了这几行代码,但是当我开始时我会报告以下错误:
2017-10-02 19: 53: 38.856088 + 0200 SceneViewApp [38539: 1262873] fatal error: unexpectedly found nil while unwrapping an Optional value
但该文件位于显示的文件夹中。
我将 3d 模型保存为 .dae,然后转换为 .scn
如何解决这个问题?谢谢
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let scene = SCNScene(named: "3Dmodels/coffee.scn")!
_ = scene.rootNode.childNode(withName: "coffee.scn", recursively: true)!
}
}
最佳答案
由于错误发生在这一行:
_ = scene.rootNode.childNode(withName: "coffee.scn", recursively: true)!
看起来没有名为“coffee.scn”的子节点,这意味着 childNode(withName:recursively:)
返回 nil
,则为强制解包 (!
) 触发 fatal error 。
如果没有您正在处理的 Assets ,我无法真正告诉您节点的名称应该是什么。
我不明白为什么节点名称会包含文件扩展名(“.scn”),因此该节点可能只是被称为“coffee”。您可以在 Xcode 中打开资源文件并选择您要查找的节点并在 Node Inspector 中查看其名称。您还可以枚举所有子节点(使用 enumerateChildNodes(_:)
)并打印它们的名称以查看所有可能的节点名称的列表。
关于Swift SceneKit 和加载 3D 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531081/