克隆SCNNode子类

问题描述

我有一个SCNNode子类名称Model3D。它添加了一些属性,在克隆节点时应将这些属性传递给新实例。或多或少是这样的:

public class Model3D: SCNNode {
...
    private var modelURL: URL!

    private override init() {
        super.init()
    }

    override final public func clone() -> Self {
        let clone = super.clone() as! Self
        clone.modelURL = modelURL
        return clone
    }
...
}

通常可以,但是有时会在let clone = super.clone() as! Self上崩溃。我不知道为什么。这应该总是可以的,但是也许我遗漏了一些东西。任何人都知道为什么会发生这种情况,为什么很少发生?这是我首先初始化此对象的方式:

public required init?(modelURL: URL) {
    super.init()
    guard let scnNode = Self.loadModel(fromURL: modelURL) else { return nil }
    self.modelURL = modelURL
    self.castsShadow = false // Shadows can be enabled by configuration
    addChildNode(scnNode)
}

class func loadModel(fromURL url: URL) -> SCNNode? {        
    guard let rootNode = SCNReferenceNode(url: url) else { return nil }
    rootNode.load() 
    return rootNode
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...