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

Unity版本: 5.6.0f

使用语言: C#

写在前面

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

实现功能:

   1. 封装配置表管理器,管理所有配置表数据
   2. 封装解析接口,实现不同数据结构的统一解析
  • 1 所有的配置表放到Resources/Config文件夹下 测试json下载


  • 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 stageDataDic = null;
    #endregion

    #region 属性
    public Dictionary 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(StageFileName);
    }

    /// 
    /// 加载json文本转换成对应数据结构
    /// 
    /// 主键
    /// 对应数据结构
    /// json文本
    /// 
    private Dictionary LoadConfigFile(string _fileName)
    {
        TextAsset textAsset = Resources.Load("Config/" + _fileName) as TextAsset;
        if (textAsset != null && textAsset.text != null)
        {
            return JsonConvert.DeserializeObject>(textAsset.text);
            // return JsonUtility.FromJson>(textAsset.text);
        }
        else
        {
            return null;
        }
    }

    #endregion
}
  • 4 测试


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

写在最后

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

你可能感兴趣的:(项目框架工具 - 数据驱动Newtonsoft.Json解析配置表)