游戏保存、读取的方法
在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();
}
}
}