? ? ? ? ?說到數據的持久化存儲荷荤,想必大家都會有各自的方法實現,小數據存儲就用Unity里自帶的PlayerPrefs這個類拾酝,多一點的數據則可以使用xml或者是json荡陷,今天就來說說這兩種方法。
1. PlayerPrefs
這個應該很簡單沟饥,和字典一樣添怔,需要設置key 和 value, 不過這里的value只有三種類型:int贤旷,float 和 string广料。存儲和獲取的API分別是PlayerPrefs.Set.. 和 PlayerPrefs.Get.. ?; 很 簡單,我就不多說了幼驶。
不過這里我得說一下之前遇到的一個坑(其實也不算艾杏,是我自己當時太懵逼,沒反應過來盅藻,不想看的客官可以略過哈):我之前有個工程里用到了中英文UI切換购桑,所以在單例類里聲明了一個公共變量curLanguage ,并且直接賦值,比如:curLanguage="english"氏淑,然后在點擊切換語言的時候PlayerPrefs.Set并且PlayerPrefs.Get后勃蜘,賦值給curLanguage,下次啟動程序的時候假残,通過單例訪問到當前的curLanguage缭贡,但是在第一次獲取的時候curLanguage的值為空,所以PlayerPrefs.Get也為空辉懒,后來一查原因是當其他腳本使用該變量的時候阳惹,該變量因為沒有在使用它的腳本之前去聲明(寫入內存),所以該值將為空眶俩。 解決辦法是:1莹汤、將該變量的值在Awake里賦值? 2、在創(chuàng)建的時候直接賦值颠印,然后把該腳本的順序放在第一位纲岭。抹竹。。
那么我們開始講第二種方法xml
2.xml
xml其實也挺簡單的荒勇,兩個方法存儲和獲取數據柒莉,如下:
然后建個GameData類闻坚,里面的字段就是你想要存儲的數據:
如下沽翔,我想要保存玩家的積分
public class GameData
{
public int playerIntegration;
public int computerOneIntegration;
public int computerTwoIntegration;
}
ok,就這樣~