美文网首页
项目框架工具 - 数据驱动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