跳到主要内容
版本:4.x

在运行时加载

本页解决:用生成代码读出配置。推荐形态是 一个 Tables 对象

Unity + JSON(最常见)

  1. 在 Unity Package Manager 中安装 Runtime 包 com.code-philosophy.luban(Add package from git URL):
    • GitHub:https://github.com/focus-creative-games/luban_unity.git
    • Gitee:https://gitee.com/focus-creative-games/luban_unity.git
  2. 用匹配的 code/data 生成(Unity 开发期常用 cs-simple-json + json)。可在配置工程旁放如下脚本(路径按你的仓库结构调整):
gen_client_json.bat
set WORKSPACE=..\..
set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll
set CONF_ROOT=%WORKSPACE%\DataTables

dotnet %LUBAN_DLL% ^
--conf %CONF_ROOT%\luban.conf ^
-t client ^
-c cs-simple-json ^
-d json ^
-x outputCodeDir=Assets/Gen ^
-x outputDataDir=Assets/StreamingAssets/json

完整可运行示例见 luban_examples/Projects/Csharp_Unity_json/gen.bat

  1. 加载:
var tables = new cfg.Tables(file =>
JSON.Parse(File.ReadAllText($"{jsonDir}/{file}.json")));

var reward = tables.TbReward.Get(1001);
Debug.Log(reward.Name);

cfg / Tables / 表名以你 luban.conftopModulemanager 与表定义为准。

要点

说明
入口new Tables(loader),不要每表一套全局静态
loader根据文件名返回该表的 JSON(或 bin 的 ByteBuf
访问tables.TbXxx.Get(key) 或索引器(视生成代码而定)
命名Excel 字段 item_id 在 C# 里常变成 ItemId(可用 codeStyle 调整)

其他语言示例见 luban_examples/Projects。非 Unity 可从示例拷贝对应 Runtime。

开发 JSON / 发布二进制

同一套加载代码可通过 loader 返回类型区分 JSON 与 bin(生成目标需匹配,如 cs-bin + bin)。细节见 运行时加载

常见坑

  • codeTarget 与 dataTarget 不匹配(例如代码按 bin 读、数据却是 json)。
  • Android 等平台上直接读 StreamingAssets 路径可能失败,需先读入内存再交给 loader。
  • 默认生成代码偏同步加载;异步需改模板或自行封装。

相关链接