将数据添加到 SCNNode 并归档
Adding data to SCNNode and archiving
我正在权衡将自定义数据添加到 SCNNode
个实例的选项。
我一直在考虑的一种方法是使用关联对象。
另一种是使用 SCNNode
子类。
关于关联对象,我想知道是否可以使用 NSKeyedArchiver.archiveRootObject(_:toFile:)
存档场景并保留数据。
关于 SCNNode
个子类,这意味着我的场景图将由该子类实例组成,而不是 SCNNode
个实例。我想知道这是否会引起麻烦。
我已在错误报告中请求 Apple 在 SCNNode
中添加 userData
属性,类似于 SpriteKit
中的 SKNode
,但与此同时,我需要找到解决方法。
子类化的一个缺点是您将无法对场景图使用 Xcode 场景编辑器。这对你来说可能无关紧要。
如果您不将它用于其他用途,name
属性 可能会对您有所帮助。您可以在那里存储一个唯一键,并用它来索引自定义数据。
就像 CALayer
一样,SCNNode
是 key-value coding compliant container class 并允许您对任意键使用 KVC。 SCNNode
符合 NSSecureCoding
协议并将自动存档这些额外的密钥。
我正在权衡将自定义数据添加到 SCNNode
个实例的选项。
我一直在考虑的一种方法是使用关联对象。
另一种是使用 SCNNode
子类。
关于关联对象,我想知道是否可以使用 NSKeyedArchiver.archiveRootObject(_:toFile:)
存档场景并保留数据。
关于 SCNNode
个子类,这意味着我的场景图将由该子类实例组成,而不是 SCNNode
个实例。我想知道这是否会引起麻烦。
我已在错误报告中请求 Apple 在 SCNNode
中添加 userData
属性,类似于 SpriteKit
中的 SKNode
,但与此同时,我需要找到解决方法。
子类化的一个缺点是您将无法对场景图使用 Xcode 场景编辑器。这对你来说可能无关紧要。
如果您不将它用于其他用途,name
属性 可能会对您有所帮助。您可以在那里存储一个唯一键,并用它来索引自定义数据。
就像 CALayer
一样,SCNNode
是 key-value coding compliant container class 并允许您对任意键使用 KVC。 SCNNode
符合 NSSecureCoding
协议并将自动存档这些额外的密钥。