【问题标题】:Unarchiving .sks file in Swift for iOS 7.1在 Swift for iOS 7.1 中取消归档 .sks 文件
【发布时间】:2015-05-12 21:12:46
【问题描述】:

我有一个应用程序,它使用以下扩展名从 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 swift sprite-kit exc-bad-access


    【解决方案1】:

    有趣的是,我通过检查 pre-iOS 8 是否正在运行来解决这个问题。如果是这样,我会加载游戏场景然后复制它。这以某种方式解决了这个问题:

            let tempScene = GameScene.unarchiveFromFile(gameSceneFile) as? GameScene
            scene = tempScene!.copy() as! GameScene
    

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 2016-01-27
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多