此方法将取消存档sks文件,并将其初始化为调用该文件的任何SKNode子类。这意味着您可以将文件作为SKNode取消存档(因此根节点将是SKNode)并将其作为子级添加到场景中。您也可以将文件归档为GameScene或任何SKNode子类。
extension SKNode { class func unarchiveFromFile(file : NSString) -> SKNode? { if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") { var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)! var archiver = NSKeyedUnarchiver(forReadingWithdata: sceneData) archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene") let scene = archiver.depreObjectForKey(NSKeyedArchiveRootObjectKey) as SKNode archiver.finishDecoding() return scene } else { return nil } }}像这样使用它:
let scene = GameScene.unarchiveFromFile("GameScene")! as GameScene要么
let levelStuff = SKNode.unarchiveFromFile("Level 1")!self.addChild(levelStuff)


