1. 程式人生 > 其它 >Unity 遊戲存檔、讀取(用C#程式碼儲存遊戲資料)

Unity 遊戲存檔、讀取(用C#程式碼儲存遊戲資料)

技術標籤:C#Unity遊戲開發unityc#unity3d

遊戲儲存、讀取的方法

在Unity中新建一個C#程式碼,將以下程式碼複製進去並且掛載到一個空物體上。

下面的程式碼分為SaveGame(儲存資料)、LodeGame(讀取資料)兩個方法,可以在遊戲中建立兩個Button,並且分別建立點選事件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
//必須要匯入的包 public class GameSaveManager : MonoBehaviour { public Inventory myInventory;//需要儲存的資料 public Item HpMedicine;//需要儲存的資料 public void SaveGame() //儲存遊戲方法 { Debug.Log(Application.persistentDataPath); if (!Directory.Exists(Application.persistentDataPath + "/game_SaveGame"
)) { Directory.CreateDirectory(Application.persistentDataPath + "/game_SaveGame"); } BinaryFormatter formatter = new BinaryFormatter();//二進位制轉換 FileStream file = File.Create(Application.persistentDataPath + "/game_SaveGame/Inventory.txt");
var json0 = JsonUtility.ToJson(myInventory);//需要儲存的資料Json轉換 var json1 = JsonUtility.ToJson(HpMedicine);//需要儲存的資料Json轉換 var json2 = JsonUtility.ToJson(MpMedicine);//需要儲存的資料Json轉換 formatter.Serialize(file, json0);//儲存的資料 formatter.Serialize(file, json1);//儲存的資料 formatter.Serialize(file, json2);//儲存的資料 file.Close(); } public void LoadGame()//讀取遊戲方法 { BinaryFormatter bf = new BinaryFormatter(); if (File.Exists(Application.persistentDataPath + "/game_SaveGame/Inventory.txt")) { FileStream file = File.Open(Application.persistentDataPath + "/game_SaveGame/Inventory.txt", FileMode.Open); JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), myInventory);//儲存的資料 JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), HpMedicine);//儲存的資料 JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), MpMedicine);//儲存的資料 file.Close(); } } }