且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将 .sks 文件链接到 SpriteKit 中的 .swift 文件

更新时间:2021-12-05 23:01:07

此方法将解压 sks 文件并将其初始化为调用它的任何 SKNode 子类.这意味着您可以将文件解压缩为 SKNode(因此根节点将是 SKNode)并将其作为子节点添加到您的场景中.您还可以将文件解压缩为 GameScene 或任何 SKNode 子类.

This method will unarchive an sks file and initialise it as whichever SKNode subclass it is called on. This means you can unarchive a file as an SKNode (so the root node will be an SKNode) and add it as a child to your scene. You can also unarchive a file as GameScene or any SKNode subclass.

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.decodeObjectForKey(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)