在許多游戲中當我們因為一些問題無法接著進行游玩,我們都會選擇保存,以便后面有空時,接著游玩,接下來,我們會學習一些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)
1.定義一個Save類,不需要繼承MonoBehaviour

該方法用于存盤射擊次數以及得分和所生成的Monster的所在位置以及其種類,
在進行游戲的存盤時我們在GameManager中來實作二進制序列化方法,
因為我們通過將游戲物體轉化為流來進行存盤以及通過二進制序列化來進行存盤,所以我們要引入兩個命名空間,

因為我們保存當前的游戲物件所以我們定義一個方法來進行創建Save物件并存盤當前游戲狀態資訊,

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

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

在我們讀取保存游戲時我們要將存盤的資料進行讀取所以在LoadByBin()方法中實作,

以上是一些對二進制序列化保存的一些講解,如有想詳細了解可以觀看大神的Unity中游戲的存檔與讀檔,十分詳細,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276696.html
標籤:其他
上一篇:python.實驗五 回圈結構
