我正在尝试将SKScene与UIViewController链接起来。现在我知道这个问题已经发布过,但是没有一个在Swift中,我的整个游戏都是用Swift编写的。无论如何,当你第一次创建一个SpriteKit游戏时,会生成两个默认文件GameScene.swift和一个GameViewController.swift。这两个似乎是通过使用“链接”:
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 MainMenuScene
archiver.finishDecoding()
return scene
} else {
return nil
}
}
}
我尝试通过制作MainMenuViewController.swift来做到这一点。然后我在文件中粘贴了上面相同的代码。然后我通过Interface Builder连接,这意味着我将ViewController的类设置为MainMenuViewController.swift。这一切似乎工作正常,但当我编译所有内容时,我得到一个错误,上面写着:'unarchiveFromFile'的重新声明无效。如何将与主菜单场景“链接”的默认生成文件具有相同的效果?