【问题标题】:Swift SceneKit and loading 3D modelsSwift SceneKit 和加载 3D 模型
【发布时间】:2018-03-13 20:28:41
【问题描述】:

我写了这几行代码但是一开始我会报如下错误:

2017-10-02 19:53:38.856088 + 0200 SceneViewApp [38539:1262873] 致命错误:在展开可选值时意外发现 nil

但文件在显示的文件夹中。

我将 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)!
    }
}

【问题讨论】:

  • 有两行强制解开您问题中的可选项。您在哪一行看到此错误?
  • 只有最后一行显示错误

标签: swift scenekit


【解决方案1】:

由于此行发生错误:

_ = scene.rootNode.childNode(withName: "coffee.scn", recursively: true)!

看起来没有名为“coffee.scn”的子节点,这意味着childNode(withName:recursively:)返回nil,然后被强制解包(!)触发致命错误。


如果没有您正在处理的资产,我真的无法告诉您节点的名称应该是什么。

我看不出节点名称包含文件扩展名(“.scn”)的原因,因此该节点可能只是称为“coffee”。您可以在 Xcode 中打开资产文件并选择您要查找的节点,然后在节点检查器中查看其名称。您还可以枚举所有子节点(使用enumerateChildNodes(_:))并打印它们的名称以查看所有可能节点名称的列表。

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 2018-11-05
    • 2017-11-19
    • 1970-01-01
    • 2023-03-27
    • 2017-11-18
    • 2021-02-08
    • 2016-11-18
    • 2020-05-07
    相关资源
    最近更新 更多