我有一个应用程序可以使用以下扩展名从iOS 8中的.sks文件中很好地加载:
class func unarchiveFromFile(file : NSString) -> SKNode?
{
if let path = NSBundle.mainBundle().pathForResource(file as String, 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! GameScene
archiver.finishDecoding()
return scene
}
else
{
return nil
}
}
但是,当我在运行iOS 7.1的设备上使用它时,我在AppDelegate上得到一个EXC_BAD_ACCESS代码EXC_I386_GPFLT,这在日志中:
SKTexture:加载图片资源时出错:“MissingResource.png”
我认为问题可能是sks文件被错误加载。谁能告诉我如何从sks文件中加载我的场景?
感谢您的帮助,
答案 0 :(得分:0)
有趣的是,我设法通过检查iOS 8之前是否正在运行来解决此问题。如果是这样,我会加载游戏场景然后复制它。这解决了这个问题:
let tempScene = GameScene.unarchiveFromFile(gameSceneFile) as? GameScene
scene = tempScene!.copy() as! GameScene