Skip to content
walon edited this page Nov 1, 2021 · 29 revisions

准备工作

如何初始化一个策划配置项目

  • 完成上面所说的装备工作
  • 创建你们项目策划配置目录,假设叫 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"

更多项目类型,参见 示例项目

unity项目中使用luban生成代码,需要依赖哪些库

只需要将luban的一些基础辅助代码加到项目即可。对于unity项目,c#代码,使用json数据的情况,只需要将 LubanLib 目录复制到项目即可。

在其他项目中使用luban生成代码,需要依赖哪些库

示例项目中找到跟你项目情况匹配的示例项目,将Luban相关的基础代码导入到你们项目即可。

如何为unity项目生成c#代码并导出json数据

对于命令行的介绍参见 上面。 你的生成命令大略如下

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

更多项目类型,参见 示例项目

如何为 unity + puerts 项目生成 ts代码,并生成json数据

--gen_types 参数取 "code_typescript_json,data_json",-s 参数取 client

具体项目,可参见 Typescript_Unity_Puerts_Json

如何在unity项目中使用c#代码加载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中的代码。

如何在unity+puers项目中使用typescript加载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中代码

如何在go项目中加载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对象

如果我用的语言是java,python,c++,rust,lua 等等,如何加载配置

请参见 示例项目。找到与你项目类型相符的示例项目,参考其加载 代码即可。

Clone this wiki locally