在上次我们已经介绍了一些关于Unity存储游戏的方法Unity存储游戏(一),接下来将会介绍剩下的二种方法,分别为Json方法以及Xml方法。

一:Json
JSON:是一种语言无关的发送和接收数据的常用格式。可以使用它来跨平台的传输数据。

JSON序列化:将存储对象 转化为JSON类型。
JSON反序列化:将JSON转化为存储对象。

{
“SchoolID”: “1”,

"students": [
{
"firstName": "小",
"lastName": "明"
},
{
"firstName": "小",
"lastName": "红"
}
],

"other": [
{
"grade": "2",
"age": "6"
},
{
"grade": "4",
"age": "8"
}
]
}

上述的便是Json的字符串,从上面字符串可以看出Json数据格式比较简单,易于读写,但是不直观。

接下来我们还是使用上次所使用的例子(SiKi学院的游戏的存档与读档)来进行讲解。

因为我们通过Json序列化来进行游戏的存储与读档所以我们要先应用命名空间。

unity保存texture Unity保存json_JSON

接下来通过使用Json来保存游戏

unity保存texture Unity保存json_JSON_02

因为我们存储游戏是将对象转化为字节流,所以我们一般先创建一个文件夹用来存储需要转为字节流的对象。因为我们是使用Json序列化来接下存储,使用我们使用JsonMapper.ToJson将对象转化为json格式的字符串。在通过StreamWriter写入文件夹中来进行转化存储。

通过Json来读取游戏

unity保存texture Unity保存json_unity保存texture_03

因为我们已经将对象转化为字节流并将其放入文件夹中,所以当我们进行游戏的读取时,我们要调用StreamReader来进行读取文件夹中的字节流,并使用ReadToEnd()来读到最后,并将其字节流转化为Save类型的对象,来完成对数据的读取。jsonStr是将文件夹中的字节流读取完毕。

以上便是Unity关于Json类型的存储以及读取。

二:Xml
XML:扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型。

序列化与反序列化的方式与二进制方法十分类似。

XML方法:可读性强,但是文件庞大,冗余信息多。

<save name="saveFile1">
<target>
<targetPosition>0</targetPosition>
<monsterType>2</monsterType>
</target>
<shootNum>16</shootNum>
<score>9</score>
</save>

 

以上便是Xml文件格式,我们可以看到Hml的可读性是很简洁明了。

同理我们使用Xml序列化方法也要引入命名空间。

unity保存texture Unity保存json_unity保存texture_04

Xml存储方法

 

unity保存texture Unity保存json_JSON_05

 

unity保存texture Unity保存json_JSON_06

 

使用Xml方法是比较麻烦的,同理我们要创建一个用于存放字节流的文件夹,同时我们要创建XML文档,以及其中的根节点,并赋予值。然后根据需求创建其元素,用于进行数据的存储。通过遍历save中存储的数据,将数据转换成XML格式,将Xml元素转化为InnerText用来存储数据。并设置好节点之间的层级关系,并保存好文件路径。

读取Xml方法

 

unity保存texture Unity保存json_unity保存texture_07

unity保存texture Unity保存json_JSON_08

 

通过通过节点名称来获取元素,结果为XmlNodeList类型,在通过遍历所有的target节点,并获得子节点和子节点的InnerText,对其进行转化为int类型来对游戏数据进行赋值。我们是通过节点下的子物体的位置来获取。如targetPosition是target的一号位,所以通过target.ChildNodes[0]来获取。

以上便是有关Unity存储的一些有关知识,希望能帮助到大家。