两种方式读取Json文件 数据
首先下载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类数据
public class Skill
{public int id;public string name;public int damage;}
代码块:
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文件 数据相关推荐
- Qt读取Json文件数据
Qt读取Json文件数据 void TcpServerCfg::initServerCfgList() {serverCfgList.clear();QString name = "./co ...
- 虚幻4 读取Json文件数据
虚幻4读取Json文件数据 1.用虚幻C++读取文件目录 TEXT(内写文件路径以及名称) FString DATA;if (FFileHelper::LoadFileToString(DATA, T ...
- ireport参数传递json_Json传递数据两种方式(json大全)
1.Json传递数据两种方式(json大全) ----------------------------字符串 var list1 = ["number","name&qu ...
- MAX31855电路和程序,实现SPI和软件模拟时序两种方式读取数据
1. 概述 MAX31855为热电偶至数字输出转换器,内置14位模/数转换器(ADC).器件带有冷端补偿检测和修正.数字控制器.SPI兼容接口,以及相关的控制逻辑,在温度控制器.过程控制或监测系统中设 ...
- 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...
第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...
- 运行python程序的两种方式交互式和文件式_Python基础知识2
运行Python程序的两种方式 小白学习,如有错误欢迎指点 一.每位小白写的第一个Python程序 1.运行Python程序的两种方式 1.1 交互式模式(即时对话) 打开cmd,打开Python解释 ...
- springMVC两种方式实现多文件上传及效率比较
springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实现多文件上传效率上却有着很大的差距 ...
- 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式
交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...
- android数据回传多个页面_Android菜鸟起飞|使用Intent实现Activity跳转的两种方式(无回传数据和有回传数据)...
使用Intent实现Activity跳转的两种方式 1. 使用startActivity(intnet)方法实现无回传数据的Activity跳转: 使用方法: 为实现跳转动作的控件绑定监听器,在点击事 ...
最新文章
- linux 下网络流量监控
- 高招攻略 领英助你清晰解读大数据专业
- 架构的能力是不断打磨1.0,2.0成就3.0,4.0
- CSS3 Animation动画的十二原则
- 200.Number of Islands
- 快速幂(二进制,十进制)
- Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列
- nHibernate Mapping By Code - Introduction
- 鸿蒙和宙斯谁厉害,漫威宇宙宙斯vs奥丁,到底谁更强
- cut\grep\sort\tr
- 实数基本定理的等价证明
- linux 按照特定字符换行_在Linus Torvalds建议之后内核淘汰80个字符长度限制
- L2-005 集合相似度(STL+暴力)
- 使用 VLD 检测内存泄漏
- 用java编写简单的仓库管理_仓库管理系统+可视化界面java编写
- beatedit不能导入音乐/不能加节拍
- 3.9 Primitive Obsession 基本类型偏执
- 42、使用mmrotate中k3det进行旋转目标检测,并进行mnn部署和ncnn部署
- 【Shader进阶】SubShader块标签Tags——IgnoreProjector
- 关于flickr的数据集笔记