首先下载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文件 数据相关推荐

  1. Qt读取Json文件数据

    Qt读取Json文件数据 void TcpServerCfg::initServerCfgList() {serverCfgList.clear();QString name = "./co ...

  2. 虚幻4 读取Json文件数据

    虚幻4读取Json文件数据 1.用虚幻C++读取文件目录 TEXT(内写文件路径以及名称) FString DATA;if (FFileHelper::LoadFileToString(DATA, T ...

  3. ireport参数传递json_Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全) ----------------------------字符串 var list1 = ["number","name&qu ...

  4. MAX31855电路和程序,实现SPI和软件模拟时序两种方式读取数据

    1. 概述 MAX31855为热电偶至数字输出转换器,内置14位模/数转换器(ADC).器件带有冷端补偿检测和修正.数字控制器.SPI兼容接口,以及相关的控制逻辑,在温度控制器.过程控制或监测系统中设 ...

  5. 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  6. 运行python程序的两种方式交互式和文件式_Python基础知识2

    运行Python程序的两种方式 小白学习,如有错误欢迎指点 一.每位小白写的第一个Python程序 1.运行Python程序的两种方式 1.1 交互式模式(即时对话) 打开cmd,打开Python解释 ...

  7. springMVC两种方式实现多文件上传及效率比较

    springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实现多文件上传效率上却有着很大的差距 ...

  8. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

  9. android数据回传多个页面_Android菜鸟起飞|使用Intent实现Activity跳转的两种方式(无回传数据和有回传数据)...

    使用Intent实现Activity跳转的两种方式 1. 使用startActivity(intnet)方法实现无回传数据的Activity跳转: 使用方法: 为实现跳转动作的控件绑定监听器,在点击事 ...

最新文章

  1. linux 下网络流量监控
  2. 高招攻略 领英助你清晰解读大数据专业
  3. 架构的能力是不断打磨1.0,2.0成就3.0,4.0
  4. CSS3 Animation动画的十二原则
  5. 200.Number of Islands
  6. 快速幂(二进制,十进制)
  7. Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列
  8. nHibernate Mapping By Code - Introduction
  9. 鸿蒙和宙斯谁厉害,漫威宇宙宙斯vs奥丁,到底谁更强
  10. cut\grep\sort\tr
  11. 实数基本定理的等价证明
  12. linux 按照特定字符换行_在Linus Torvalds建议之后内核淘汰80个字符长度限制
  13. L2-005 集合相似度(STL+暴力)
  14. 使用 VLD 检测内存泄漏
  15. 用java编写简单的仓库管理_仓库管理系统+可视化界面java编写
  16. beatedit不能导入音乐/不能加节拍
  17. 3.9 Primitive Obsession 基本类型偏执
  18. 42、使用mmrotate中k3det进行旋转目标检测,并进行mnn部署和ncnn部署
  19. 【Shader进阶】SubShader块标签Tags——IgnoreProjector
  20. 关于flickr的数据集笔记

热门文章

  1. MYSQL的删除和重装
  2. Task 1 知识图谱介绍
  3. mangle和demangle
  4. Vscode+phpstudy配置PHP环境,并在服务器中运行。
  5. JS/SQL MVC框架介绍
  6. leetcode 滑动窗口
  7. 国庆节去哪浪?让 Python 帮你分析分析
  8. 安装wpa_supplicant工具
  9. PR曲线,ROC曲线和AUC的区别
  10. 十进制转二进制函数实现(C语言)