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


    让策划也能轻松修改数据的方法:运用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;
    }
    

    返回值:泛型类型的列表

  • 相关阅读:
    Prince and princess「DP优化」
    Wooden Stricks——两个递增条件的线性DP
    死磕 java线程系列之线程池深入解析——构造方法
    死磕 java线程系列之线程池深入解析——体系结构
    死磕 java线程系列之自己动手写一个线程池(续)
    死磕 java线程系列之自己动手写一个线程池
    死磕 java线程系列之创建线程的8种方式
    死磕 java线程系列之线程模型
    死磕 java同步系列之终结篇
    死磕 java同步系列之redis分布式锁进化史
  • 原文地址:https://www.cnblogs.com/zhxmdefj/p/10512551.html
Copyright © 2020-2023  润新知