让策划也能轻松修改数据的方法:运用Excel2Json2Object插件将xml表格转为Object导入脚本

运用Excel2Json2Object插件将xml表格转为Object导入脚本

下载地址
https://pan.baidu.com/s/1m86B7Gk6Jt46rRfyAmrHng 提取码: ikvc

插件不支持 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;
}

返回值:泛型类型的列表

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!