美文网首页
项目框架工具 - 数据驱动Newtonsoft.Json解析配置

项目框架工具 - 数据驱动Newtonsoft.Json解析配置

作者: 肖马克_蛮牛 | 来源:发表于2017-08-15 11:59 被阅读173次

    Unity版本: 5.6.0f

    使用语言: C#

    写在前面

    unity已经内置了基本的json工具类JsonUtility,不过暂时不支持Dictionary<K, V>格式,所以使用开源工具Newtonsoft.Json 来解析(密码: 6arw)。

    实现功能:

       1. 封装配置表管理器,管理所有配置表数据
       2. 封装解析接口,实现不同数据结构的统一解析
    

    • 2 创建对应结构表 放到Script/Config/Data文件夹下


    public class StageData  {
        public string name;
        public int stageNum;
        public string next;
        public string bg;
        public string icon;
        public int battleNum;
        public int enemyNumMin;
        public int enemyNumMax;
        public int moneyTreeRatio;
    }
    
    • 3 封装数据配置管理器


    using UnityEngine;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    
    /**********************************************
    * Author : MaShuai
    * 
    * Time : 17-8-15
    *
    * Function : 配置表数据管理器
    **********************************************/
    
    public class ConfigMgr {
    
        #region 表名
        private const string StageFileName = "stages";
        #endregion
    
        #region 数据容器
        private Dictionary<string, StageData> stageDataDic = null;
        #endregion
    
        #region 属性
        public Dictionary<string, StageData> StageDataDic
        {
            get
            {
                return stageDataDic;
            }
        }
        #endregion
    
        #region 构造方法
        private static ConfigMgr instance;
    
        public static ConfigMgr Instance
        {
            get
            {
                if(instance == null)
                {
                    instance = new ConfigMgr();
                }
                return instance;
            }
        }
        private ConfigMgr()
        {
        }
        #endregion
    
        #region 加载配置表
        public void LoadConfigData()
        {
            stageDataDic = LoadConfigFile<string, StageData>(StageFileName);
        }
    
        /// <summary>
        /// 加载json文本转换成对应数据结构
        /// </summary>
        /// <typeparam name="K">主键</typeparam>
        /// <typeparam name="V">对应数据结构</typeparam>
        /// <param name="_fileName">json文本</param>
        /// <returns></returns>
        private Dictionary<K, V> LoadConfigFile<K, V>(string _fileName)
        {
            TextAsset textAsset = Resources.Load("Config/" + _fileName) as TextAsset;
            if (textAsset != null && textAsset.text != null)
            {
                return JsonConvert.DeserializeObject<Dictionary<K, V>>(textAsset.text);
                // return JsonUtility.FromJson<Dictionary<K, V>>(textAsset.text);
            }
            else
            {
                return null;
            }
        }
    
        #endregion
    }
    
    • 4 测试


    public class Test : MonoBehaviour {
        void Start () {
            ConfigMgr.Instance.LoadConfigData();
            Dictionary<string, StageData> dic = ConfigMgr.Instance.StageDataDic;
            List<string> keys = new List<string>(dic.Keys);
            for(int i = 0; i < keys.Count; i++)
            {
                Debug.Log(dic[keys[i]].name + " " + dic[keys[i]].next);
            }
        }
    }
    

    写在最后

     #成功的道路没有捷径,代码这条路更是如此,唯有敲才是王道。

    相关文章

      网友评论

          本文标题:项目框架工具 - 数据驱动Newtonsoft.Json解析配置

          本文链接:https://www.haomeiwen.com/subject/kuumrxtx.html