首先下载LitJson.dll 文件,并将其拖入 Unity项目中的 的 Assets/Plugins目录中
其次在你的Unity项目中创建好Assets/StreamingAssets文件夹,用于存放文件
功能:将数据写入到文件中(可自由扩充),在程序运行时获取指定对象(这里 根据指定id 获取其对象数据)。
json文件中的数据参数 要与Skill中公开的字段 名称完全一致。
(注意Json 文件之准许有一个 顶级项【即一个数组 或一个对象】)
json技能信息.text
[
{
"id": 1,
"name": "D",
"damage": 20
},
{
"id": 2,
"name": "T",
"damage": 200
},
{
"id": 3,
"name": "C",
"damage": 2000
}
]
对应的 Skill类数据文章来源:https://www.toymoban.com/news/detail-518154.html
public class Skill
{
public int id;
public string name;
public int damage;
}
代码块:文章来源地址https://www.toymoban.com/news/detail-518154.html
private void OnGUI()
{
if (GUILayout.Button("读取方式一"))
{
string file = File.ReadAllText(Application.streamingAssetsPath +"/json技能信息.txt");
//jsonData 代表一个数组或者一个对象【JsonData 就是json数据 根据json文件不同 其代表不用 ,可能为数组可能为对象】
JsonData jsonData = JsonMapper.ToObject(file);
Skill skill = new Skill();
//使用 foreach 遍历 该数据
foreach (JsonData temp in jsonData)//这里temp 代表一个对象
{
JsonData idValue = temp["id"];//通过字符串索引器 可以获得json文件中 键值对的值
skill.id = int.Parse(idValue.ToString());
skill.name = temp["name"].ToString();
skill.damage = int.Parse(temp["damage"].ToString());
//【将读取的数据对象】添加到字典集合中
if (!skillDic.ContainsKey(skill.id))
skillDic.Add(skill.id, skill);
}
Debug.Log($"{skillDic[2].name},{skillDic[2].id},{skillDic[2].damage}");//C,3,2000
}
if (GUILayout.Button("读取方式二"))
{
string file = File.ReadAllText(Application.streamingAssetsPath + "/json技能信息.txt");
//因为 json文件中 数据顶级项是数组 所以直接转换为 对象数组
Skill[] skills = JsonMapper.ToObject<Skill[]>(file);
//使用 foreach 遍历 该数据
foreach (Skill temp in skills)//这里temp 代表一个对象
{
if (!skillDic.ContainsKey(temp.id))
skillDic.Add(temp.id, temp);//将数据添加到集合中
}
Debug.Log($"{skillDic[1].name},{skillDic[1].id},{skillDic[1].damage}");//D,1,20
}
}
到了这里,关于两种方式读取Json文件 数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!