我如何使用SpriteNode所在的spritekit存档文件,并将SpriteNode实例化为"子"(使用Swift?)
我可以使用scene.childNodeWithName("mysprite")找到该节点,但我不知道如何将它变成我的SKSpriteNode子类的实例.
没有办法在Xcode 6的SpriteKit编辑器中为节点设置自定义类.(但这对于向Apple提交文件是一个很棒的功能请求.)
但是,sks您在Xcode中生成的文件只是NSKeyedArchiver存档,您可以使用NSKeyedUnarchiver选项来控制在加载时实例化对象的方式.因此,有一个(有限的)选项可以在加载时更改类 - 当您在Xcode 6中创建一个新的SpriteKit Game项目时,您可以在模板代码中看到这一点.
请参阅SKNode在扩展(或类别在ObjC版本)GameViewController.m:它使用的NSKeyedUnarchiver方法setClass(_:, forClassName:)来处理SKScene在归档实例作为模板项目的实例GameScene类代替.您可以扩展此模式以从Xcode创建的归档创建其他自定义场景类.
但是,您会注意到,它setClass(_:forClassName:)基于类名称工作,因此如果您的存档包含同一类的多个对象,并且您希望将其中一个对象解析为与其余类不同的类,则它的用途有限.在这种情况下,您可能会考虑使用其他unarchiver技巧 - 例如,替换unarchiver(_:didDecodeObject:)委托方法中的对象.
| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |