在Unity中游戲存檔有如下四種方式:PlayerPrefs,C#序列化,Xml序列化,Json序列化
一般要解決幾個問題:
1.游戲版本的升級
2.玩家有多個存檔
3.玩家破壞存檔的情況
PlayerPrefs
優點:上手簡單,存儲方便,不用考慮內部實現,適合做小游戲的數據存檔。
缺點:只支持基本數據類型,無法存儲一個類,數組,集合,字典等。
C#序列化
優點:
1.除了靜態類型和抽象類型以及類必須標記為[Serializable]的,其他的都可以被序列化:類,數組,集合,字典,類及其子類等。
缺點:
1.不會調用要序列化類的構造函數。
2.在升級版本后,新增一個字段也只是采用系統默認值,而不是我在類中直接賦的值。
3.在升級版本后,如果刪除了之前的一個字段,則無法正確解析(反序列化)。
Xml序列化
優點:
1.序列化出來的數據直觀,可以序列化類和類中的對象。
2.升級版本后,如果新增了字段,則自動采用你在類中賦給該變量的值。
3.升級版本后,如果刪除了之前的字段,則自動忽略之前的字段,而不會像c#序列化一樣報錯。
缺點:
1.不能序列化字典,二維數組以上的數據。
2.比Json更占空間,且引入的dll也更大。
Json序列化
優點:
1.簡單輕量
2.可以滿足你要序列化的幾乎任何類型數據。
3.如果要升級版本,可以任意刪除之前的字段而不會出現不能解析的情況;可以新增字段且采用你在類中直接賦的值。
缺點:
1.相對PlayerPrefs來說,引入了一個250kb左右的DLL文件。
Newtonsoft.Json :https://github.com/SaladLab/Json.Net.Unity3D
引用:https://blog.csdn.net/a237653639/article/details/50076755