Spritekit场景归档
问题描述:
的SpriteKit programming guide包含这个有用的小珍闻:Spritekit场景归档
商店游戏关卡的场景节点的归档。这个档案包括场景,节点树中的所有后代以及所有连接的物理实体,关节和动作。
但它没有关于在哪里或如何存储此存档的任何信息。这是我目前的代码,但它不起作用:
// Save Data
let fileManager = FileManager.default
let URL = fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0]
let path = URL.appendingPathComponent("stage1.dat")
if NSKeyedArchiver.archiveRootObject(stage1, toFile: path.path) != false {
print("stage saved")
}
else {
print("save failed")
}
// Load Data
var data = Data()
do{
data = try Data(contentsOf: path)
}
catch{
print(error)
}
let stage = NSKeyedUnarchiver.unarchiveObject(with: data) as? GameScene
编辑:原来我没有写入本地域的权限。哎呀。 我把它切换到用户域,现在写入工作。但是,试图解压该文件现在正在抛出一个NSException。我将解除代码添加到上面的块中。
答
我结束了使用unarchiveTopLevelObjectWithData,而不是产生一个错误,我可以赶上。
原来,NSexception是由于试图使用一个可选的东西,这不是解码对象进行解码。
这可能是你在找什么http://battleofbrothers.com/sirryan/saving-game-data-in-spritekit – 0x141E