如何将SpriteKit档案与SKSpriteNode子类一起使用 [英] How to use SpriteKit archives with SKSpriteNode subclasses

查看:0
本文介绍了如何将SpriteKit档案与SKSpriteNode子类一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用SpriteKit存档文件,即SpriteNode所在的位置,并将该SpriteNode实例化为一个子类(使用Swift?)

我可以使用scene.Child NodeWithName("mySprite")找到该节点,但我不知道如何将其变成我的SKSpriteNode子类的实例。

SpriteKit

无法在推荐答案6的SpriteKit编辑器中为节点设置自定义类。(不过,这将是一个很棒的feature request苹果文件。)

但是,您在Xcode中生成的sks文件只是NSKeyedArchiver归档文件,您可以使用NSKeyedUnarchiver选项来控制在加载时如何实例化对象。因此,有一个(有限的)选项可以在加载时更改类-当您在Xcode6中创建新的SpriteKit Game项目时,您可以在模板代码中看到这一点。

参见GameViewController.m中的SKNode扩展(或Objc版本中的类别):它使用NSKeyedUnarchiver方法setClass(_:, forClassName:)将存档中的SKScene实例视为模板项目的GameScene类的实例。您可以扩展此模式,以从Xcode创建的档案创建其他自定义场景类。

您会注意到,setClass(_:forClassName:)是在类名的基础上工作的,所以如果您的归档包含同一个类的几个对象,并且您想将其中一个解码为与其他类不同的类,则setClass(_:forClassName:)的用处有限。在这种情况下,您可以考虑使用其他解压技巧-例如,替换unarchiver(_:didDecodeObject:)委托方法中的对象。

这篇关于如何将SpriteKit档案与SKSpriteNode子类一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆