Unity数据长效化存储
·28 阅读Unity数据持久化
Unity数据长效化存储
1.PlayerPrefabs
简述
PlayerPrefabs常用于单机游戏本地存储玩家是否已经触发过游戏中某一阶段的状态(如是否第一次游玩)。
存储方法
Unity提供了三种类型的存储方法:
PlayerPrefabs.SetInt("keyName",value); //用于整数存储
PlayerPrefabs.SetFloat("keyName",value); //用于小数存储
PlayerPrefabs.SetString("keyName",value); //用于字符串存储
获取方法
PlayerPrefabs.GetInt("keyName"); //用于获取整数存储
PlayerPrefabs.GetFloat("keyName"); //用于获取小数存储
PlayerPrefabs.GetString("keyName"); //用于获取字符串存储
删除方法
PlayerPrefabs.Delete("keyName");//删除某一名称的数据
PlayerPrefabs.DeleteAll(); //删除全部
2.IO
简述
通过IO对数据进行存储,转换为其他类型格式的文件。
存储位置:Application.streamingAssetsPath + "/" + fileName + "文件格式后缀名",可以在项目文件夹中直接创建该文件夹进行数据管理。
存储方法
1.数据串存储
using System.IO;
File.WriteAllText(filePath,"字符串内容");
2.byte[]格式存储
using System.IO;
using System.Text;
FileStream fs = new FileStream(fileName,FileMode);
byte[] tempBytes = Encoding.UTF8.GetBytes("内容");
fs.Write(tempBytes,0,tempBytes.Length);
fs.Flush();
fs.Close();
3.StreamWriter存储
using System.IO;
StreamWriter sw = new(fileName);
for (int i = 0; i < 100; i++)
sw.WriteLine("内容" + i);
sw.Flush();
sw.Close();
3.通过XML标记语言存储数据
简述
用于存储结构较为复杂、数据项较多的数据时可以采用XML存储。
存储方法
1.命名空间
using System.Xml;
2.创建与存储
XmlDocument xml = new();
XmlElement root = xml.CreateElement("Root"); // 创建根元素
xml.AppendChild(root);
root.SetAttribute("name", "root"); // 设置根元素属性
XmlElement book = xml.CreateElement("Books"); // 创建书籍容器元素
book.SetAttribute("name", "books");
root.AppendChild(book);
// 遍历书籍信息,为每本书创建元素并添加到书籍容器中
foreach (var item in books)
{
XmlElement bookElement = xml.CreateElement("Book"); // 创建单本书籍元素
bookElement.SetAttribute("name", item.name); // 设置书籍名称
bookElement.SetAttribute("author", item.author); // 设置书籍作者
/*
也可以使用bookElement.InnerText = item.name;
该方法会在标签内直接插入内容
*/
bookElement.SetAttribute("id", item.id.ToString()); // 设置书籍ID
book.AppendChild(bookElement); // 将书籍元素添加到书籍容器
}
// 检查目录是否存在,不存在则创建
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
// 保存XML文件
xml.Save(path + "/" + fileName + ".xml");
3.存储后效果
<Root name="root">
<Books name="books">
<Book name="Unity3D游戏开发" author="宣雨松" id="0" />
<!--
InnerText插入效果
<Book id="0" >
<name>Unity3D游戏开发</name>
</Book>
-->
<Book name="第一行代码Android" author="郭霖" id="1" />
</Books>
</Root>