游戏配置表是游戏策划的标配,如下图:
那么程序怎么把把这张配置表导入使用?
1.首先,利用命令行把Excel格式的文件转化成Json格式:
json-excel\json-excel json Tables\ Data\
@copy Data\CharacterDefine.txt ..\Client\Data\
pause
其中把第一行的Tables\改成自己存放Excel文件的文件夹,Data\改成存放Json文件的文件夹即可,第二行是复制Json文件的命令。
生成的Json文件如下
{
"1": {
"ID": 1,
"Name": "小型治疗药水",
"Description": "使用立即回复500生命值(战斗回复)",
"Type": "NORMAL",
"Category": "药水",
"Level": 1,
"CanUse": true,
"UseCD": 1.0,
"Price": 200,
"SellPrice": 100,
"StackLimit": 99,
"Icon": "UI/Items/hongp",
"Function": "RecoverHP",
"Param": 500
},
"2": {
"ID": 2,
"Name": "小型法力药水",
"Description": "使用立即回复500法力值(战斗回复)",
"Type": "NORMAL",
"Category": "药水",
"Level": 1,
"CanUse": true,
"UseCD": 1.0,
"Price": 200,
"SellPrice": 100,
"StackLimit": 99,
"Icon": "UI/Items/lanp",
"Function": "RecoverMP",
"Param": 500
},
}
2.用Define文件定义内容:
public class ItemDefine
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ItemType Type { get; set; }
public string Category { get; set; }
public int Level { get; set; }
public CharacterClass LimitClass { get; set; }
public bool CanUse { get; set; }
public int Price { get; set; }
public int SellPrice { get; set; }
public int StackLimit { get; set; } // 堆叠限制
public string Icon { get; set; }
public ItemFunction Function { get; set; }
public int Param { get; set; }
public List<int> Params { get; set; }
}
3.C#代码读取Json文件:
using System.Collections.Generic;
using System.IO;
using Common;
using Common.Data;
using Newtonsoft.Json;
namespace GameServer.Managers
{
public class DataManager : Singleton<DataManager>
{
internal string DataPath;
public Dictionary<int, ItemDefine> Items = null;
public DataManager()
{
this.DataPath = "Data/";
Log.Info("DataManager > DataManager()");
}
internal void Load()
{
json = File.ReadAllText(this.DataPath + "ItemDefine.txt");
this.Items = JsonConvert.DeserializeObject<Dictionary<int, ItemDefine>>(json);
}
}
}
在DataManager单例初始化后,调用Load函数读取json文件,就能使用配置表了
4.使用案例
DataManager.Instance.Items[ItemID].Name