2016-12-29 106 views
1

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。我将解除代码添加到上面的块中。

+0

这可能是你在找什么http://battleofbrothers.com/sirryan/saving-game-data-in-spritekit – 0x141E

回答

1

我结束了使用unarchiveTopLevelObjectWithData,而不是产生一个错误,我可以赶上。

原来,NSexception是由于试图使用一个可选的东西,这不是解码对象进行解码。

This question pretty much sums it up.