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

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文件如下图:
示例

添加描述
当然,游戏中这么简单是远远不够的,这只是操作方法,后面的还需要大家慢慢精炼

猜你喜欢

转载自blog.csdn.net/weixin_41590778/article/details/129321725