-
-
Notifications
You must be signed in to change notification settings - Fork 565
FAQ
- 安装 dotnet sdk 5.0
- 下载 luban_examples 项目
- 完成上面所说的装备工作
- 创建你们项目策划配置目录,假设叫 MyConfigs
- 将 luban_examples/MiniDesignerConfigsTemplate目录下的 Datas目录和Defines目录拷贝到 MyConfigs目录下
- 创建 MyConfigs/check.bat脚本(如linux或mac请酌情相应调整,但原理不变),其内容如下
set LUBAN_CLIENT=dotnet %PATH_OF_LUBAN_SERVER_DLL%
%LUBAN_CLIENT% -j cfg --^
-d Defines\__root__.xml ^
--input_data_dir Datas ^
--output_data_dir output_json ^
--gen_types data_json ^
-s all
pause
将GEN_CLIENT 中的 %PATH_OF_LUBAN_SERVER_DLL% 更改为实际的 luban_examples/Tools/Luban.ClientServer/Luban.ClientServer.dll 路径
- 运行。 将会看到MyConfigs目录下生成了 output_json 目录,目录下有一个 item_tbitem.json文件。至此完成项目初始化工作。
- 假设你要创建的配置为装备表.
- 在MyConfigs/Datas 目录下创建 equip.xlsx(实践中推荐按模块创建子目录,在模块目录创建配置,便于维护管理), 其内容如下
## | id | name | attr |
---|---|---|---|
##type | int | string | int |
1 | equip1 | 10 | |
2 | equip2 | 15 |
- 在 MyConfigs/Datas/tables.xlsx 里新增一行。 有些不相关列被忽略了
## | full_name | value_type | define_from_excel | input | ... |
---|---|---|---|---|---|
demo.TbItem | Item | true | 物品表.xlsx |
- 至此,完成添加新表工具。 运行 check.bat 检查是否成功生成!
详细文档参见 luban工具
代码生成相关的工具有三个,都在luban_examples/Tools目录下。
- Luban.Client。 Luban工具客户端
- Luban.Server。 Luban工具服务器端
- Luban.ClientServer。 Luban工具前后端一体。
对于新手简单起见,我们介绍Luban.ClientServer的用法,命令如下:
dotnet %LUBAN_CLIENT_SERVER_DLL% -j cfg -- ^
-d %ROOT_FILE% ^
--input_data_dir %DATA_DIR% ^
--output_code_dir %OUTPUT_CODE_DIR%
--output_data_dir %OUTPUT_DIR% ^
--gen_types %GEN_TYPE% ^
-s %GROUP%
其中:
- LUBAN_CLIENT_SERVER_DLL为 Luban.ClientServer.dll的路径, 可以指向 luban_examples/Tools/Luban.ClientServer/Luban.ClientServer.dll
- ROOT_FILE 为根定义文件,指向 MyConfigs/Define/root.xml
- INPUT_DATA_DIR 为配置数据的根目录,指向 MyConfigs/Datas
- OUTPUT_CODE_DIR 为生成代码的目录
- GEN_TYPE 为生成类型。 如果你使用unity,想生成c#代码,导出json数据,则使用 "code_cs_json,data_json"
更多项目类型,参见 示例项目
只需要将luban的一些基础辅助代码加到项目即可。对于unity项目,c#代码,使用json数据的情况,只需要将 LubanLib 目录复制到项目即可。
在示例项目中找到跟你项目情况匹配的示例项目,将Luban相关的基础代码导入到你们项目即可。
对于命令行的介绍参见 上面。 你的生成命令大略如下
dotnet %LUBAN_CLIENT_SERVER_DLL% -j cfg -- ^
-d %ROOT_FILE% ^
--input_data_dir %DATA_DIR% ^
--output_code_dir %OUTPUT_CODE_DIR%
--output_data_dir %OUTPUT_DIR% ^
--gen_types "code_cs_json,data_json" ^
-s client
也即 --gen_types参数取 "code_cs_json,data_json", -s 参数取 client
具体项目,可参见 Csharp_Unity_Json
更多项目类型,参见 示例项目
--gen_types 参数取 "code_typescript_json,data_json",-s 参数取 client
具体项目,可参见 Typescript_Unity_Puerts_Json
只需一行代码
// 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。
var tables = new cfg.Tables(Loader);
// 访问一个单例表
Console.WriteLine(tables.TbGlobal.Name);
// 访问普通的 key-value 表
Console.WriteLine(tables.TbItem.Get(12).Name);
// 支持 operator []用法
Console.WriteLine(tables.TbMail[1001].Desc);
请自行实现合适的Loader函数,根据配置文件名file返回一个加载好的ByteBuf。 可借鉴Csharp_Unity_Json中的代码。
// 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。
let tables = new cfg.Tables(loader)
// 访问一个单例表
console.log(tables.TbGlobal.name)
// 访问普通的 key-value 表
console.log(tables.TbItem.get(12).Name)
请自行实现一个Loader的函数,根据表file 返回一个解析好的JSON对象。可借鉴 Typescript_Unity_Puerts_Json中代码
// 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。
if tables , err := cfg.NewTables(loader) ; err != nil {
println(err.Error())
return
}
// 访问一个单例表
println(tables.TbGlobal.Name)
// 访问普通的 key-value 表
println(tables.TbItem.Get(12).Name)
请自行实现一个合适的loader函数,根据配置文件 file,返回一个Json对象
请参见 示例项目。找到与你项目类型相符的示例项目,参考其加载 代码即可。