-
-
Notifications
You must be signed in to change notification settings - Fork 727
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 检查是否成功生成!
有哪些分组,是在__root__.xml中定义的,可以完全自由配置,如下:
<group name="c" default="1"/> client
<group name="s" default="1"/> server
<group name="e" default="1"/> editor
<service name="server" manager="Tables" group="s"/>
<service name="client" manager="Tables" group="c"/>
<service name="all" manager="Tables" group="c,s,e"/>group定义了一个分组类型。 default表明,table未指定分组的情况下,是否默认属于此分组。
service配置了某个service需要导出哪些分组。 service的name属性即 Luban.Client命令行参数里的 -s 参数。 例如,指定 -s all后,导出c,s,e分组的配置。
目前支持两种粒度的分组导出:table级别和bean字段级别。table定义和 bean的field定义都支持group属性。
- table 级别导出 table的group属性如果不指定,则默认对所有group.default=1的分组导出,如果指定,则只对指定分组导出。可以有多个分组。
xml格式定义如下
<table name="TbDemoGroup_C" value="DemoGroup" group="c" input="test/demo_group.xlsx"/> 此表只属于c分组
<table name="TbDemoGroup_CS" value="DemoGroup" group="c,s" input="test/demo_group.xlsx"/> 此表属于c,s分组
<table name="TbDemoGroup_E" value="DemoGroup" group="e" input="test/demo_group.xlsx"/> 此表只属于e分组xlsx格式定义如下
| ## | full_name | value_type | input | group | ... |
|---|---|---|---|---|---|
| TbDemoGroup_C | DemoGroup | test/demo_group1.xlsx | c | ||
| TbDemoGroup_CS | DemoGroup | test/demo_group2.xlsx | c,s | ||
| TbDemoGroup_E | DemoGroup | test/demo_group3.xlsx | e |
Luban.Client使用 -s client 参数时,只导出TbDemoGroup_C和TbDemoGroup_CS表,而TbDemoGroup_E表不会导出。
- bean的field级别导出
导出配置时,bean中某个field根据分组导出。
xml定义格式如下:
<bean name="DemoGroup">
<var name="id" type="int"/>
<var name="x1" type="int"/> 默认属于所有分组c,s,e
<var name="x2" type="int" group="c"/>属于 c 分组
<var name="x3" type="int" group="s"/>属于s分组
<var name="x4" type="int" group="c,s"/>属于c,s分组
</bean>如果在 __bean__.xlsx 中定义bean,格式如下
| ## | full_name | sep | comment | field.name | fields.type | field.group | ... |
|---|---|---|---|---|---|---|---|
| DemoGroup | id | int | |||||
| x1 | int | ||||||
| x2 | int | c | |||||
| x3 | int | s | |||||
| x4 | int | c,s |
如果直接在数据表里定义的bean结构,格式如下
| ## | id | x1 | x2&group=c | x3&group=s | x4&group=c,s |
|---|---|---|---|---|---|
| ##type | int | int | int | int | int |
| 1 | 2 | 2 | 2 | 2 |
当 -s client 时, id、x1、x2、x4字段导出。 当 -s server 时, id、x1、x3、x4字段导出。
支持以下几种组织形式,允许开发者根据情况灵活组织配置文件结构。例如可以一个表对应一个xlsx文件;可以多个表都放到同个xlsx文件;可以一个表对应多个xlsx文件;可以一个表对应一个目录。
- 来自某个excel文件的所有单元薄
- 来自某个excel文件的指定单元薄
- 来自json、xml、lua、yaml文件
- 来自目录树下所有文件,每个文件对应一个记录
- 以上的随意组合
支持。 只需要取input的值为<sheet名>@<xlsx文件> 即可。例如表 demo.TbDemo1的input为 sheet1@demo.xlsx, dbdb.TbDemo2的input为sheet2@demo.xlsx。 这样两个表的数据都放到一个xlsx文件中了。
你甚至可以同时来自多个sheet,只要在input中用逗号分割来即可。
只要input中 填入这几个xlsx文件,以逗号分割即可。例如 demo.TbDemo的input="demo1.xlsx,demo2.xlsx"。