运用 Excel2Json2Object 插件将 xml 表格转为 Object 导入脚本
插件不支持 float 类型, 浮点数请使用 double 类型
1. 导入插件
导入 Excel2Object.unitypackage
2. 创建存储数据的 Excel 表格
ID | Name | Hp | Desc |
---|---|---|---|
1 | a | 10 | da |
2 | b | 20 | db |
3 | c | 30 | dc |
4 | d | 40 | dd |
后缀名必须是 ".xlsx"
表格第一行为变量名
其后每一行都是一组数据
把表格导入 Unity
这里创建的表格文件名为 HeroDataxml.xml
3.Unity 中确定数据类
- public class HeroData
- {
- public int ID;
- public string Name;
- public int hp;
- public string Des;
- }// 变量名必须和表格第一行一致
4. 在 Unity 中把 Excel 表格转换为 Jason 文件
转换生成同名 Jason 文件
5.Jason 文件转换为 Object
例如我们创建一个控制对象 Hero1 的脚本 HeroDatactl
将 HeroDatactl 挂载到游戏物体 Hero1 上
然后在 HeroDatactl 中声明一个变量
public TextAsset JSON;// 声明一个存放. txt 的变量
在 unity 中指定他为转换好的 JSON 文件 (把我们转换出的 JSON 文件, 直接拖到这个变量中)
- public class HeroData : MonoBehaviour
- {
- public TextAsset JSON;// 声明一个存放. txt 文件的变量
- // Start is called before the first frame update
- void Start()
- {
- // 将一个 jason 文件转换为一个类型对象
- //(一个 HeroData 类的对象, 就是一条数据)
- List<HeroData> datas
- = JsonToObject.JsonToObject_ByJsonContent<HeroData>(JSON.text);
- // 返回值为表格中的数据
- // 输出测试
- Debug.Log(datas[0].ID);
- Debug.Log(datas[2].Name);
- }
- }
- // 将一个 jason 文件转换为一个类型对象
- JsonToObject.JsonToObject_ByJsonContent<HeroData>(JSON.text);
- //<> 要把表格中的数据, 转换的什么类型的对象
6. 插件 API
JsonToObject.JsonToObject_ByJsonFile()
用于把一个 JSON 文件转换为 (Object)
参数: JSON 文本文件的地址 (需要加上文件名的后缀名)
- /// 把一个 JSON 文本文件, 转成一个对象 (Object)
- /// <typeparam name="T"> 对象的类型 </typeparam>
- /// <param name="filePath">JSON 文本文件的地址 (需要加上文件名和后缀名)</param>
- public static List<T> JsonToObject_ByJsonFile<T>(string filePath)
- {
- /* 直接解析成对象 */
- // 读取 JSON 文本中的内容
- string JSON = File.ReadAllText(filePath);
- // 解析 JSON 文本中的内容 -(解析成数组或者 List 列表都可以)
- List<T> datas = JsonToObject_ByJsonContent<T>(JSON);
- return datas;
- }
返回值: 泛型类型的列表
JsonToObject.JsonToObject_ByJsonContent()
用于把一个 JSON 格式的文本转换为 (Object)
参数: JSON 文本文件中的内容
- /// 把一个 JSON 格式的文本, 转成一个对象 (Object)
- /// <typeparam name="T"> 对象的类型 </typeparam>
- /// <param name="filePath">JSON 文本中的内容 </param>
- public static List<T> JsonToObject_ByJsonContent<T>(string conntent)
- {
- /* 直接解析成对象 */
- // 解析 JSON 文本中的内容 -(解析成数组或者 List 列表都可以)
- T[] datas = JsonMapper.ToObject<T[]>(conntent);
- // 把数组封装成 List 列表
- List<T> dataList = new List<T>();
- for (int i = 0; i < datas.Length; i++)
- {
- dataList.Add(datas[i]);
- }
- return dataList;
- }
返回值: 泛型类型的列表
来源: http://www.bubuko.com/infodetail-2984194.html