首页 学习日记正文

Unity自带的转Json工具

阿沐 学习日记 2020-05-09 1075 0 unity

Unity自带的转Json工具

1、Excel设计好表格数据

image.png

2、使用Excel转Json工具获得Json语法    https://www.bejson.com/json/col2json/

3、修改Json语句,前面加上头节点,在线Json解析检测    https://www.json.cn/

image.png

4、保存Json文件到指定路径【保存编码为UTF-8】

5、加载出指定路径的Json文件

6、定义好相应的数据结构用以保存数据,结构需要[System.Serializable]

7、使用JsonUtility.FromJson<T>(json字符串)


8、具体实现:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class BagController : UIBasePanel {

    //保存所有赛车信息的字典
    private Dictionary<int, Car> carDict = new Dictionary<int, Car>();

	void Start () {
       //从指定路径加载json文件,返回json的字符串
        string json=ResController.GetInstance().LoadAsset<TextAsset>("Json/car").text;
        //使用Unity自带的转json方法
        CarInfo carsInfo = JsonUtility.FromJson<CarInfo>(json);
        //将所有信息保存进字典
        for (int i = 0; i < carsInfo.carInfo.Count; i++)
        {
            carDict.Add(carsInfo.carInfo[i].id,carsInfo.carInfo[i]);
        }
        //打印测试
        Debug.Log(GetCarInfo(5).name);
	}

    /// <summary>
    /// 获取 赛车表的 赛车信息
    /// </summary>
    /// <param name="id">赛车id</param>
    /// <returns></returns>
    public Car GetCarInfo(int id)
    {
        if (carDict.ContainsKey(id))
            return carDict[id];
        return null;
    }

    
}

[System.Serializable]
public class CarInfo
{
    public List<Car> carInfo;
}

[System.Serializable]
public class Car
{
    public int id;
    public string name;
    public int type;
    public string desc;
}

9、效果:


image.png

打赏

评论

Music