ios - 克隆 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
}
解决方案
推荐阅读
- python-3.x - 如何根据绘图中的条件为折线图着色?
- python-2.7 - 为什么 isdigit 有效,但 isdecimal 不适用于简单的年龄代码
- python - 在 SqlAlchemy 上使用 distinct on (Postgres) 的正确方法是什么?
- java - 如何通过后台的连接状态更改firebase数据库?
- asp.net - 将 DLL 引用添加到独立的 ASPX 页面?
- excel - 仅当该行中有多个单元格为空时,如何从excel中的表格中删除整行?(VBA)
- python - 使用 numpy 多项式或 astropy 多项式时如何实现 asdf 扩展?
- java - 如何使用 selenium 在 google 中获取搜索结果的数量?
- python - 两条线之间的角度并不总是有效
- java - 将日期列表与当前日期进行比较,即列表中有多少日期等于 currentdate