unity征服Unity3dunity3D技术分享

读取JSON文件 如何在Unity中读取Json文件中的数据

2017-09-09  本文已影响257人  UnityPlane

Josn是一种轻量级的数据交换格式,JSON能够描述四种简单的类型(字符串、数字、布尔值及null)和两种结构化类型(对象及数组),在Unity里经常用Json来处理大量的字符串,容易解析,效率非常快。

基本结构

1、语法

数据存在键值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

eg:表示两个学生的基本信息

{“Student”:[{“name”:”Tom”,”age”:19,”gender:”M”}, {“name”:”Marry”,”age”:22,”gender:”W”}] }

2、Json开发

使用两种类库:(需要将System.Json.dll和LitJson.dll放到工程目录下)

System.Json(生成Json文件)

LitJson(解析Json文件)

(1)System.Json的类

JsonArray类 JsonArray是0个或多个JsonValue对象的有序序列

JsonObject类 JsonObject是一个无序的0个或更多个的键值对集合

JsonValue类 一个具体的Json对象的Value值

示例

在Unity中创建一个空物体,在其上挂载一个脚本,命名为JsonScript.cs,写个方法来在Unity中生成一个Json文件,然后再写个方法来读取这个Json文件。前提要导入System.Json.dll和LitJson.dll两个库文件到Unity中。代码如下:

```

using UnityEngine;

using System.Collections;

using System.Json;

using LitJson;

using System.IO;

public class JsonScript : MonoBehaviour { //文件要保存的路径

string path;

void Start ()

{ path = Application.streamingAssetsPath+ "/JsonTest.txt"; //CreateJson(); ReadJson(); } void CreateJson()

{ //创建一个json对象,相当于一个{}

JsonObject js = new JsonObject();//定义一个json的value值

JsonValue name = "洛克萨斯之手"; //把该值加到js对象里

js.Add("name", name);

//Q技能 JsonObject q = new JsonObject();

q.Add("Q技能", "大杀四方");

JsonArray time = new JsonArray(9,8,7,6,5);

q.Add("冷却时间", time);

q.Add("消耗", 30);

//E技能

JsonObject e = new

JsonObject();

e.Add("E技能", "无情铁手");

e.Add("冷却时间", new JsonArray(24,21, 18, 15, 12));

JsonArray skill = new JsonArray(q, e);

js.Add("技能", skill); //写入流路径 StreamWriter writer = new

StreamWriter(path);

js.Save(writer); //写入流把数据写入文档后自动更新

writer.AutoFlush = true; //关闭流 writer.Close(); } //解析json文件 void

ReadJson() { //fileInfo类提供了可以创建/打开/移动/拷贝一个文件 FileInfo file = new

FileInfo(path); //打开文件 StreamReader reader= file.OpenText();

//读取文件里的内容,从流的当前位置到末尾读取流 string str = reader.ReadToEnd();

//使用JsonMapper类把字符串转成json对象 JsonData data =

JsonMapper.ToObject(str); Debug.Log(data["技能"][0]["冷却时间"][0]); }

}

```

生成的Json文件如下图:

当然,游戏中这么简单是远远不够的,这只是操作方法,后面的还需要大家慢慢精炼
上一篇下一篇

猜你喜欢

热点阅读