Unity 遊戲存檔、讀取(用C#程式碼儲存遊戲資料)
阿新 • • 發佈:2021-01-21
技術標籤: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();
}
}
}