正在为 iOS 7.1 解压 Swift 中的 .sks 文件
Unarchiving .sks file in Swift for iOS 7.1
我有一个应用程序可以很好地从 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 文件加载我的场景?
感谢您的帮助,
有趣的是,我通过检查 iOS 8 之前是否为 运行 设法解决了这个问题。如果是这样,我会加载游戏场景然后复制它。这以某种方式解决了问题:
let tempScene = GameScene.unarchiveFromFile(gameSceneFile) as? GameScene
scene = tempScene!.copy() as! GameScene
我有一个应用程序可以很好地从 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 文件加载我的场景?
感谢您的帮助,
有趣的是,我通过检查 iOS 8 之前是否为 运行 设法解决了这个问题。如果是这样,我会加载游戏场景然后复制它。这以某种方式解决了问题:
let tempScene = GameScene.unarchiveFromFile(gameSceneFile) as? GameScene
scene = tempScene!.copy() as! GameScene