跳到主要内容
版本:Next

FAQ

如何指定主键

table的index字段指定主键列表。 详细请参见 配置相关定义 中关于table的mode和index的相关文档。

map及list表支持主键概念,未指定mode和index的情况下,自动为mode=map模式,并记录bean的第一个字段作为主键。

假设 TbTest表的记录为Test类型,你想用Test的my_index字段作为key,则:

  • 如果在xml里定义表,则在table的index属性中指定主键字段名,如下:
<table name="TbTest" value="Test" index="my_index"/>
  • 如果在 table.xlsx里定义表,则在index列指定主键名,如下
##varfull_namevalue_typedefine_from_excelinputindex...
TbTestTesttrueequip.xlsxmy_index

支持多主键吗?

支持。 table mode=list时,支持联合多主键模式和独立多主键模式。详细文档参见 配置相关定义 中关于table的mode的相关文档。

支持按client和server导出不同表及不同字段吗?

支持。配置相关定义 中关于 分级定义及分组导出相关文档。

支持哪些源数据文件类型

  • excel族。 csv、xls、xlm、xlsx、xlsm 等等
  • json
  • xml
  • lua
  • yaml

配置表的数据可以来源于多个文件吗?

可以。 参见 配置相关定义 中关于 table.input的文档。

可以将多个表放到同一个excel文件吗?

可以。 参见 配置相关定义 中关于 table.input的文档。

当数据文件为xlsx文件时,luban会读入第一个sheet还是所有sheet?

读入所有sheet,但是会忽略那些A1单元格内容不是##开头的sheet。

策划想在xlsx中有一个非数据的sheet,该怎么做呢

只要该sheet的A1单元格不以##开头即可。

想注释掉某一列,该如何做

将列名取空,或者 #xxxx这样的名称。

想注释掉某一行记录,该如何做

将该行第一个单元格填以##即可。

有些配置只想开发期内部测试用,正式发布时不导出,该如何做?

luban支持数据tag的概念。 excel第一列为tag。

  • 当tag为##时忽略这个行
  • 当tag为xxx时,如果Luban.Client 命令行中使用 --export_exclude_tags xxx,则不会导出该记录

我想每个json保存一个记录,文件太多,在input中指定很麻烦,怎么解决?

使用 目录数据源。 把所有json文件放到一个目录下(可以是目录树),将input设为该目录。luban会自动遍历整个目录树,将每个文件当作 一个记录读入。 详细参见其它数据源-json

一个json文件可以包含多个记录吗?

可以。但必须在数据源中以 *@xxx.json形式指定。详细参见其它数据源-json

记录可以来自json文件的某个深层次字段吗?

可以。分两种情况:

  • 从字段中读入一个记录,则以 a.b.c@xx.json的形式指定
  • 从字段中读入记录列表,则以 *a.b.c@xx.json的形式指定

详细参见其它数据源-json

可以像xlsx那样,将多个表的数据都放到一个json文件中吗?

可以。 与excel数据源类似,只要每个表用 field@xx.json或者 *field@xx.json的形式指定即可。 详细参见其它数据源-json

支持异步加载配置表吗?

不直接支持。但你可以通过自定义模板方式实现异步加载。

可以引用现有的枚举和结构吗?比如生成的代码中想使用UnityEngine.AudioType和UnityEngine.Color

可以,支持external类型的枚举和结构,但目前只支持c#语言。 详细文档参见 配置定义介绍 中的type mapper相关文档。