我创建了GameOver.sks和GameOver.swift .How,我可以像默认的sprite-kit项目中的GameSense.sks和GameSense.swift那样将它们连接起来吗?
发布于 2015-02-26 19:07:27
您可以使用以下扩展名解压sks文件。
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
}
}
}如果GameOverScene是您的SKScene,GameOverScene.sks是您的sks文件,那么您可以使用以下代码解压。
let scene = GameOver.unarchiveFromFile("GameOverScene") as GameOverScene发布于 2015-07-16 14:16:34
我刚刚用Swift 2和Xcode7测试版做到了这一点。将.sks文件和.swift文件命名为相同的"GameOver.sks & GameOver.swift“。尝试GameScene.swift中的代码以过渡到GameOver场景,以确保其正常工作。这是假设您在GameViewController.swift中以"GameScene“作为初始场景开始,也假设您启动了一个SpriteKit模板项目并手动添加了GameOver文件。
import SpriteKit
class GameScene: SKScene{
override func didMoveToView(view: SKView){ }
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
sceneTransition()
}
func sceneTransition(){
let nextScene = GameOver(size: size)
nextScene.scaleMode = scaleMode
let gameOverTransition = SKTransition.flipHorizontalWithDuration(1.0)
view?.presentScene(nextScene, transition: gameOverTransition)
}
}https://stackoverflow.com/questions/28732568
复制相似问题