游戏配置表的导入使用

游戏配置表是游戏策划的标配,如下图:

那么程序怎么把这张配置表导入使用?

1.首先,利用命令行把Excel格式的文件转化成Json格式:

powershell 复制代码
json-excel\json-excel json Tables\ Data\

@copy Data\CharacterDefine.txt ..\Client\Data\
pause

其中把第一行的Tables\改成自己存放Excel文件的文件夹,Data\改成存放Json文件的文件夹即可,第二行是复制Json文件的命令。上面的代码存成.cmd文件双击使用即可

生成的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文件定义内容:

csharp 复制代码
  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文件:

csharp 复制代码
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.使用案例

csharp 复制代码
DataManager.Instance.Items[ItemID].Name
相关推荐
云起SAAS1 小时前
实时双人对战游戏平台你画我猜知识竞猜斗兽棋五子棋H5抖音快手微信小程序看广告流量主开源
游戏·ai编程·看广告变现轻·实时双人对战游戏平台·你画我猜知识竞猜斗兽棋五子棋
上海云盾第一敬业销售3 小时前
游戏盾在保障游戏安全方面的独特优势
网络·安全·游戏
程序员敲代码吗3 小时前
C++运行库修复指南:解决游戏办公软件报错问题
开发语言·c++·游戏
中二病码农不会遇见C++学姐4 小时前
文明6 Mod入门:三分钟学会用SQL制作第一个修改器
sql·游戏
微祎_4 小时前
Flutter for OpenHarmony:构建一个 Flutter 点击狂热游戏,深入解析响应式交互、动态反馈与高性能状态管理
flutter·游戏·交互
张艾拉 Fun AI Everyday5 小时前
Sparkli AI:塑造 5-12 岁孩子“金钱观”和“商业思维”的闯关游戏
人工智能·游戏
一起养小猫5 小时前
Flutter for OpenHarmony 实战:打造功能完整的记账助手应用
android·前端·flutter·游戏·harmonyos
微祎_5 小时前
Flutter for OpenHarmony:构建一个 Flutter 旋转迷宫游戏,深入解析网格建模、路径连通性检测与交互式解谜设计
javascript·flutter·游戏
芒克芒克5 小时前
LeetCode 跳跃游戏 II 最优解法:贪心算法
leetcode·游戏·贪心算法
ujainu7 小时前
Flutter + OpenHarmony 游戏开发进阶:粒子系统初探——简易爆炸与得分飞字
flutter·游戏·openharmony