问题描述
我有一个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 (将#修改为@)