将数据添加到 SCNNode 并归档

Adding data to SCNNode and archiving

我正在权衡将自定义数据添加到 SCNNode 个实例的选项。

我一直在考虑的一种方法是使用关联对象。

另一种是使用 SCNNode 子类。

关于关联对象,我想知道是否可以使用 NSKeyedArchiver.archiveRootObject(_:toFile:) 存档场景并保留数据。

关于 SCNNode 个子类,这意味着我的场景图将由该子类实例组成,而不是 SCNNode 个实例。我想知道这是否会引起麻烦。

我已在错误报告中请求 Apple 在 SCNNode 中添加 userData 属性,类似于 SpriteKit 中的 SKNode ,但与此同时,我需要找到解决方法。

子类化的一个缺点是您将无法对场景图使用 Xcode 场景编辑器。这对你来说可能无关紧要。

如果您不将它用于其他用途,name 属性 可能会对您有所帮助。您可以在那里存储一个唯一键,并用它来索引自定义数据。

就像 CALayer 一样,SCNNodekey-value coding compliant container class 并允许您对任意键使用 KVC。 SCNNode 符合 NSSecureCoding 协议并将自动存档这些额外的密钥。