2016-12-29 139 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.