Unity - 存读档机制简析
2020-12-13 15:55
标签:sys void gets cti strong string 因此 json格式 mon 本文旨在于简要分析Unity中的两种存档机制,即:PlayerPrefs数据持久化方法及Serialization数据序列化方法 较比于源项目,我另加了JSON方法、XML方法等及一些Unity设置,更便于读者在使用中理解Unity的存档机制。核心脚本为 无论是数据持久化方法还是序列化方法都可以实现Unity的存档机制。数据持久化方法操作方便,适用于数值较少的小项目。序列化方法的存档格式较为规范,其中二进制方法操作简单,但可读性差;JSON方法存档格式规范易读,具有一定的可读性;XML方法操作繁琐,但是存档格式可读性强,JSON和XML存档都可以用文本读取便于查看。 Unity - 存读档机制简析 标签:sys void gets cti strong string 因此 json格式 mon 原文地址:https://www.cnblogs.com/SouthBegonia/p/11616825.htmlGame.cs
一、PlayerPrefs 数据持久化方法
//项目内未展示该用法,但以下代码即为常规用法
//新建存档
PlayerPrefs.SetInt("Score", 20);
PlayerPrefs.SetFloat("Health", 100.0F);
PlayerPrefs.SetString("Name",m_PlayerName);
//检验存档信息
if(!PlayerPrefs.HasKey("Name"))
return;
//读取存档
socre = PlayerPrefs.GetInt("Score");
health = PlayerPrefs.GetFloat("Health");
m_PlayerName = PlayerPrefs.GetString("Name");
//删除存档
PlayerPrefs.DeleteKey("Score");
二、Serialization 序列化方法
1. 二进制存储(Binary Formatter):
//存档信息的类:
[System.Serializable]
public class Save
{
public int hits = 0;
public int shots = 0;
public List
2. JSON方法:
/*
* 注意:使用JSON存档方法需要用到LitJson库,LitJson.dll文件可在项目Assets目录下找到。
* 使用方法:将LitJson.dll拖拽到个人项目Assets目录下即可
*/
//JSON存档函数:
public void SaveAsJson()
{
//1. 创建save对象保存游戏信息
Save save = CreateSaveGameobject();
string path = Application.dataPath + "/gameSaveByJson.json";
//2. 利用JsonMapper将save对象转换为Json格式的字符串
string saveJsonStr = JsonMapper.ToJson(save);
//3. 创建StreamWriter,将Json字符串写入文件中
StreamWriter sw = new StreamWriter(path);
sw.Write(saveJsonStr);
sw.Close();
}
//JSON读档函数:
public void LoadAsJson()
{
string path = Application.dataPath + "/gameSaveByJson.json";
//1. 检验目标位置是否有存档
if(File.Exists(path))
{
//2. 创建一个StreamReader,用来读取流
StreamReader sr = new StreamReader(path);
//3. 将读取到的流赋值给jsonStr
string jsonStr = sr.ReadToEnd();
sr.Close();
//4. 将字符串jsonStr转换为Save对象
Save save = JsonMapper.ToObject
JSON存档格式:
{
"livingTargetPositions":[0,1,2,4],
"livingTargetsTypes":[2,2,2,1],
"hits":1,
"shots":8
}
3. XML方法:
//XML存储
public void SaveAsXml()
{
Save save = CreateSaveGameObject();
//创建XML文件的存储路径
string filePath = Application.dataPath + "/gameSaveByXML.txt";
//创建XML文档
XmlDocument xmlDoc = new XmlDocument();
//创建根节点,即最上层节点
XmlElement root = xmlDoc.CreateElement("save");
//设置根节点中的值
root.SetAttribute("name", "saveFile1");
//创建XmlElement
XmlElement target;
XmlElement targetPosition;
XmlElement targetType;
//遍历save中存储的数据,将数据转换成XML格式
for (int i = 0; i
XML存档格式:
三、总述
综上所述,Unity存档机制众多,但还应按照个人项目需求选择合适的存档方法。
四、参考