Unity遊戲之存儲數據

在許多遊戲中當我們因為一些問題無法接著進行遊玩,我們都會選擇保存,以便後面有空時,接著遊玩。接下來,我們會學習一些Unity有關的存儲方法。

一、Unity-PlayerPrefs(數據持久化)

這是Unity自帶的用於本地持久化保存與讀取的類,采用的是鍵值對的方式來進行存儲,一般通過鍵名來進行獲取。PlayerPrefs有Int,float,string類型。

保存數據

PlayerPrefs.SetString(“Color”, color);
PlayerPrefs.SetInt(“Number”, number);
PlayerPrefs.SetFloat(“Class”, class);

讀取數據

color = PlayerPrefs.GetString(“Color”, “red”);
number = PlayerPrefs.GetInt(“Number”, 20);
class = PlayerPrefs.GetFloat(“Class”, 1);

其他一些方法

PlayerPrefs.HasKey();//是否包含該鍵值對
PlayerPrefs.DeleteAll();//刪除所有鍵值對
PlayerPrefs.DeleteKey();//刪除某一個鍵值對

二、Unity-Serialization(序列化)和Deserialization(反序列化)

在Unity中我們也可以通過使用序列化來實現存儲,我們將要存儲的對象用序列化轉化為字節流來進行存儲,當我們需要用時我們通過反序列化將字節流轉化為對象來進行讀取。

常見的序列化方法:二進制,XML,Json.

這三種方法各有千秋,以下是對這三種方法對比
二進制方法:簡單,但可讀性差

XML方法:可讀性強,但是文件龐大,冗餘信息多

JSON方法:數據格式比較簡單,易於讀寫,但是不直觀,可讀性比XML差

接下來我會講解一些關於二進制的方法,關於XML以及Json方法我會放在下次來講。

三、二進制序列方法

二進制方法(Binary Formatter)
序列化:新建或打開一個二進制文件,通過二進制格式器將對象寫入該二進制文件。
反序列化:打開待反序列化的二進制文件,通過二進制格式器將文件解析成對象。

在進行存儲之前我們要定義一個類用來存儲我們需要保存的東西,接下來我會使用SiKi學院的案例來進行講解。(詳情觀看http://www.sikiedu.com/my/course/129)

定義一個Save類,不需要繼承MonoBehaviour

該方法用於存儲射擊次數以及得分和所生成的Monster的所在位置以及其種類。

在進行遊戲的存儲時我們在GameManager中來實現二進制序列化方法。

因為我們通過將遊戲物體轉化為流來進行存儲以及通過二進制序列化來進行存儲,所以我們要引入兩個命名空間。

因為我們保存當前的遊戲對象所以我們定義一個方法來進行創建Save對象並存儲當前遊戲狀態信息。

接下來使用二進制來進行對遊戲的保存

if (File.Exists(Application.dataPath + “/StreamingFile” + “/byBin.txt”)){UIManager._instance.ShowMessage(“保存成功”);}是安全校驗,當文件夾存在該路徑會提示保存成功。

讀取二進制

在我們讀取保存遊戲時我們要將存儲的數據進行讀取所以在LoadByBin()方法中實現。

以上就是Unity遊戲之存儲數據的詳細內容,更多關於Unity存儲數據的資料請關註WalkonNet其它相關文章!

推薦閱讀:

    None Found