欢迎光临散文网 会员登陆 & 注册

unity教程:存档系统(JSON篇)

2023-06-07 18:58 作者:尘风一枚  | 我要投稿

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using TMPro;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;


public class ArchiveManager : MonoBehaviour

{

//需要保存与加载的数据

public Data data = new Data();

//需要保存与读取的游戏内数据

public TMP_InputField text1;

public TMP_InputField text2;

public TMP_InputField text3;

public TMP_InputField text4;

//定义游戏保存数据路径

public static string savaGameDataPath;

//定义保存数据到本地的文件所在的文件夹名字

//public static string savaGameDataFileName = "game_Data"; (写注释过于麻烦就不搞这个了)(忽略即可)

private void Awake()

{

//PS:Application.persistentDataPath获得的是unity游戏数据文件夹的路径

savaGameDataPath = Application.persistentDataPath;

//debug打印保存数据的路径

Debug.Log(savaGameDataPath);

}

/// <summary>

/// 更新数据 (将游戏内数据保存以方便保存到本地)

/// </summary>

private void UpdateData()

{

data.data1 = text1.text;

data.data2 = text2.text;

data.data3 = text3.text;

data.data4 = text4.text;

}

/// <summary>

/// 更新游戏 (将数据保存到游戏中以方便游戏进行数据操作)

/// </summary>

private void UpdateGame()

{

text1.text = data.data1;

text2.text = data.data2;

text3.text = data.data3;

text4.text = data.data4;

}

/// <summary>

/// 保存游戏数据至本地

/// </summary>

public void SavaData()

{

//更新数据 方便后续保存数据至本地

UpdateData();


//检测是否存在该文件夹

if (!Directory.Exists(savaGameDataPath + "/game_Data"))

{

//如果没有该文件夹则在该路径下创建一个名为game_Data的文件夹

Directory.CreateDirectory(savaGameDataPath + "/game_Data");

}

//使用file静态方法Create在game_Data文件夹下创建一个名为data的txt文件 并且将返回对象存入变量以便后续操作

using (FileStream file = File.Create(savaGameDataPath + "/game_Data/data.txt"))

{

//二进制转化 该对象主要用于二进制转化操作(用于加密)

BinaryFormatter formatter = new BinaryFormatter();

//使用JsonUtility静态方法ToJson将类(Data)数据转换为Json格式并返回为一个字符串

string json = JsonUtility.ToJson(data);

//使用formatter实例方法Serialize(序列化)将json字符串导入file文件中

formatter.Serialize(file, json);

}

}


public void LoadData()

{

//检测是否存在该文件

if (File.Exists(savaGameDataPath + "/game_Data/data.txt"))

{

//使用File静态方法Open读取保存在本地的数据文件

using (FileStream file = File.Open(savaGameDataPath+"/game_Data/data.txt",FileMode.Open))

{

//二进制转化 该对象主要用于二进制转化操作(用于解密)

BinaryFormatter formatter = new BinaryFormatter();

//使用formatter实例方法Deserialize(反序列化)将文件的二进制数据转换成Json文本并把Json文本返回成一个字符串

string json = (string)formatter.Deserialize(file);

//使用JsonUtility静态方法FromJsonOverwrite将Json文本的数据写入data中

JsonUtility.FromJsonOverwrite(json, data);

}

//更新游戏 把本地数据更新到游戏中

UpdateGame();

}

}


}


/// <summary>

/// 需要保存至本地的数据

/// </summary>

public class Data

{

public string data1;

public string data2;

public string data3;

public string data4;

}

unity教程:存档系统(JSON篇)的评论 (共 条)

分享到微博请遵守国家法律