1早期的数据格式
在早期程序开发中一个简单且常用的数据格式为CSV。该格式单纯依靠逗号来分割数据。目前windows的office依然支持CSV解析,我们可以试着新建一个txt文件,在里面加入逗号分隔的信息:
a, 1, 15, 30, true
将txt文件后缀改为csv,可以看到系统自动生成了一个excel表格,由空格分隔的每一项都成了表格的一个单元。但显然这种方法可读性很差,因此对于存储大量数据不常用
2 json
json是一种“数组+对象” 的数据存储方式,其中[ ]内为数组,{ }内为对象,例如
{
"Persons":[
{
"name":"a",
"age":18
},
{
"name":"b",
"age":17
}
]
}
unity自带json数据创建和解析的功能JsonUtility。
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
[Serializable]
public class Person {
public string name;
public int age;
}
[Serializable]
public class Persons {
public Person[] persons;
}
public class JsonUtilityTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Person person = new Person();
person.name = "a";
person.age = 18;
Person person2 = new Person();
person2.name = "b";
person2.age = 17;
Persons persons = new Persons();
persons.persons = new Person[] {
person, person2};
string jsonStr = JsonUtility.ToJson(persons);
Debug.Log(jsonStr);
Persons ps = JsonUtility.FromJson<Persons>(jsonStr);
foreach (Person p in ps.persons) {
Debug.Log(p.name);
}
}
}
1
using System;
要使用JsonUtility工具,要先在文件中引入System
2
[Serializable]
public class Person {
public string name;
public int age;
}
[Serializable]
public class Persons {
public Person[] persons;
}
这里我们创建两个类Person和Persons用于示例。在类前面的标记[Serializable]代表可序列化,只有带有该标记的类才能转化为json格式
3
string jsonStr = JsonUtility.ToJson(persons);
在我们创建并赋值Persons对象后,使用JsonUtility.ToJson()方法即可将对象自动转化为json文件,其内容如下:
{“persons”:[{“name”:“a”,“age”:18},{“name”:“b”,“age”:17}]}
Persons ps = JsonUtility.FromJson<Persons>(jsonStr);
要解析json文件,我们使用方法JsonUtility.FromJson<类型>()得到json文件最外层的数据类型,然后即可对该数据进行层层拆包得到里面的数据
除了系统自带的JsonUtility方法,还有很多常用的第三方json数据处理方法,如LitJson
下载LitJson的dll文件后,在unity Assets文件夹下面创建Plugins文件夹,并把LitJson.dll放入该文件夹。在C#脚本中引入LitJson即可使用LitJson文件
LitJson使用示例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
public class Heros {
public Hero[] heros;
}