原視頻地址:Unity教程:如何存儲和加載游戲(ScriptableObject)_嗶哩嗶哩_bilibili
將代碼掛在到任意空物體上,例如叫SaveGameManager
需要兩個按鈕,分別添加點擊事件,方法在下方代碼中
以下方法是保存背包里的數據,可以參考做出,保存人物個人信息數據,如金幣數等
1:保存游戲
2:載入游戲
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using System.IO;//系統操作庫 5 using System.Runtime.Serialization.Formatters.Binary;//調用二進制庫 6 7 public class SaveDataManager : MonoBehaviour { 8 [Header("我的背包")] 9 public Bag mybag; 10 11 /// <summary> 12 /// 保存游戲 13 /// </summary> 14 public void SaveGame() { 15 16 print("點擊了保存游戲按鈕"); 17 18 //輸出保存位置 19 Debug.Log(Application.persistentDataPath); 20 21 //判斷如果不存在保存文件數據 22 if (!Directory.Exists(Application.persistentDataPath + "/game_SaveData")) { 23 24 //創建游戲存儲目錄文件 25 Directory.CreateDirectory(Application.persistentDataPath + "game_SaveData"); 26 } 27 28 //實例化二進制轉化工具 29 BinaryFormatter f = new BinaryFormatter(); 30 31 //創建保存文件位置 32 FileStream file = File.Create(Application.persistentDataPath + "game_SaveData/bag.txt"); 33 34 //將背包轉換成json格式 35 var json = JsonUtility.ToJson(mybag); 36 37 //序列化文件,轉成二進制 38 f.Serialize(file, json); 39 40 file.Close();//關閉文件句柄 41 42 print("數據以保存到:" + Application.persistentDataPath); 43 } 44 45 /// <summary> 46 /// 加載游戲 47 /// </summary> 48 public void LoadGame() { 49 50 print("點擊了保存游戲按按鈕"); 51 52 //實例化二進制轉化類 53 BinaryFormatter bf = new BinaryFormatter(); 54 55 //如果游戲保存目錄存在 56 if (File.Exists(Application.persistentDataPath + "game_SaveData/bag.txt")) { 57 58 //打開文件(路徑,模式) 59 FileStream file = File.Open(Application.persistentDataPath + "game_SaveData/bag.txt",FileMode.Open); 60 61 //反序列化json(數據,位置) 62 JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), mybag); 63 64 //關閉文件句柄 65 file.Close(); 66 } 67 print("完成了保存數據操作"); 68 } 69 }