1. 为什么你需要Luban Next?
如果你正在用Unity开发游戏,肯定遇到过配置数据管理的痛点。Excel表格改来改去,策划和程序来回扯皮,最后还要手动转成JSON或CSV。更糟的是,运行时加载配置时发现类型不匹配,或者字段漏了,debug到怀疑人生。
Luban Next就是来解决这些问题的。我在最近的一个MMO项目里用它管理了300+张配置表,实测下来比传统方式节省了至少40%的开发时间。最让我惊喜的是,它支持配置热重载——游戏运行时修改Excel,不用重启就能看到效果,策划同事感动得差点请我吃饭。
2. 环境准备:10分钟快速搭建
2.1 安装必备工具
首先确保你的电脑上有:
- Unity 2021 LTS或更新版本(我用的是2022.3.9f1)
- .NET SDK 8.0(官方推荐版本,实测7.0也行)
- Git Bash(Windows用户必备,后面跑脚本用)
验证安装是否成功:
dotnet --version # 应该输出类似 8.0.201 的版本号2.2 获取Luban示例工程
官方提供了开箱即用的示例:
git clone https://github.com/focus-creative-games/luban_examples cd luban_examples/Next这个目录结构特别清晰:
Tools/- Luban核心工具MiniTemplate/- 最小化模板DesignerConfigs/- 配置表设计规范
3. 第一个配置表:从Excel到游戏内加载
3.1 创建物品表
在MiniTemplate/Datas/下新建item.xlsx,按这个结构填写:
| id | name | price | use_effect |
|---|---|---|---|
| 1001 | 治疗药水 | 50 | restore_hp(100) |
| 1002 | 魔法卷轴 | 200 | cast_fireball(3) |
保存后运行:
./gen.bat # Windows ./gen.sh # Mac/Linux3.2 查看生成结果
会在output/下生成:
item_tbitem.json- 最终游戏读取的配置item_tbitem.cs- 自动生成的C#类
重点看生成的代码:
public partial class TbItem { public readonly Dictionary<int, Item> DataMap; public Item Get(int key) => DataMap[key]; }4. Unity集成:三步接入
4.1 安装Unity Package
两种方式任选:
- 通过Git URL安装:
https://github.com/focus-creative-games/luban_unity.git - 手动下载后放入
Packages/目录
4.2 关键配置
在Player Settings里勾选:
- Allow unsafe code(必须!)
- .NET 4.x运行时版本
4.3 加载配置实战
创建一个GameManager.cs:
void Start() { var tables = new cfg.Tables(Loader); Debug.Log(tables.TbItem.Get(1001).name); // 输出"治疗药水" } JSONNode Loader(string file) { string path = Path.Combine( Application.streamingAssetsPath, "Luban", $"{file}.json" ); return JSON.Parse(File.ReadAllText(path)); }5. 高级技巧:避坑指南
5.1 处理复杂数据类型
当需要Unity的Vector3等类型时,在Defines.xml添加:
<bean name="vector3"> <var name="x" type="float"/> <var name="y" type="float"/> <var name="z" type="float"/> </bean>然后创建转换工具类:
public static Vector3 ToUnityVector3(cfg.vector3 v) { return new Vector3(v.x, v.y, v.z); }5.2 多语言解决方案
在Excel里添加多列:
| id | name_cn | name_en |
|---|---|---|
| 1001 | 药水 | Potion |
生成时指定语言参数:
dotnet Luban.dll --l10n cn # 只生成中文配置6. 性能优化实测
在我的Redmi K50上测试加载5000条物品数据:
- JSON加载:平均78ms
- 二进制加载(用
-d bin参数):仅29ms - 内存占用:二进制格式比JSON小40%
建议正式项目用二进制格式,开发期用JSON方便调试。切换方式就是在gen.bat里改-d参数。
7. 常见问题排查
Q:运行gen.bat报错"找不到Luban.dll"A:检查两点:
- 是否在Next目录下执行
- 是否安装了正确的.NET SDK版本
Q:Unity中加载时报类型转换错误A:大概率是Excel里填了字符串但代码里用float,建议:
- 清理
StreamingAssets/Luban目录 - 重新生成所有配置
- 重启Unity
Q:如何让策划自己维护配置?A:推荐方案:
- 用Git管理Excel文件
- 设置CI自动生成配置(Jenkins/GitHub Actions)
- 自动同步到Unity工程