跳到主要内容
版本:Next

生成代码和数据

Luban不仅支持导出配置数据,也内置支持生成多种语言的代码,用于运行时加载配置。同时Luban也支持protobuf、flatbuffers、msgpack等流行的消息框架。 你使用的语言即使不在默认支持的语言列表,也可以通过这些消息框架来支持。

支持的语言

  • c++ (11+)
  • c# (.net framework 2+. dotnet core 2+)
  • java (1.6+)
  • go (1.10+)
  • lua (5.1+)
  • typescript (3.0+)
  • python (2.7+ 及 3.0+)
  • gdscript (4.0+)
  • php
  • rust

支持数据格式

  • bin (推荐用于正式发布的项目
  • json
  • lua
  • xml
  • yaml

生成数据

命令行参数 -d {dataTarget}用于指定生成的数据类型,参数-x outputDataDir={dataOutputDir}用于指定代码输出目录。假设我们要生成json数据,示例如下:

set GEN_CLIENT={Luban.dll的路径}
set CONF_ROOT={DataTables目录的路径}

dotnet %GEN_CLIENT% ^
-t client ^
-d json ^
--conf %CONF_ROOT%\luban.conf ^
-x outputDataDir=..\GenerateDatas\json

pause

更多的dataTarget可见 DataTarget列表

生成代码

命令行参数 -c {codeTarget}用于指定生成的代码类型,参数 -x outputCodeDir={codeOutputDir}用于指定代码输出目录。假设我们要生成加载json数据的c#代码,示例如下:


set GEN_CLIENT={Luban.dll的路径}
set CONF_ROOT={DataTables目录的路径}

dotnet %GEN_CLIENT% ^
-t client ^
-c cs-simple-json ^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=Assets/Gen

pause

codeTarget cs-simple-jsoncs表示生成c#语言代码,simple表示使用SimpleJson加载json文件,json表示加载json数据。所有的codeTarget都遵循这个命名规则。

对于同一种数据格式(如json),为所有语言生成的数据文件都是一样的。也就是导出数据不受-c参数影响。

更多的codeTarget可见 CodeTarget列表

危险

请不将outputCodeDiroutputDataDir指向相同目录,它们会互相覆盖!

同时生成代码和数据

运行两次命令分别生成代码和数据不仅麻烦,也增加了生成时间。Luban支持一次生成代码和数据,示例如下:


set GEN_CLIENT={Luban.dll的路径}
set CONF_ROOT={DataTables目录的路径}

dotnet %GEN_CLIENT% ^
-t client ^
-c cs-simple-json ^
-d json ^
--conf %CONF_ROOT%\luban.conf ^
-x outputCodeDir=Assets/Gen ^
-x outputDataDir=..\GenerateDatas\json

一次性生成多种语言和数据格式也是可以的,只要指定多个-c-d参数即可,不过要求它们必须是相同的分组(即-t 参数相同)。很显然,它们不应该被输出到相同目录。Luban支持层级参数机制,当有多个codeTarget或者dataTarget 时,可以通过{codeTarget}.outputCodeDir=xxx{dataTarget}.outputDataDir=xxx来分别指定它们的输出目录。示例如下:

set GEN_CLIENT={Luban.dll的路径}
set CONF_ROOT={DataTables目录的路径}

dotnet %GEN_CLIENT% ^
-t client ^
-c cs-simple-json ^
-c cs-bin ^
-d json ^
-d bin ^
--conf %CONF_ROOT%\luban.conf ^
-x cs-simple-json.outputCodeDir=Assets/Gen/Json ^
-x cs-bin.outputCodeDir=Assets/Gen/Bin ^
-x json.outputDataDir=..\GenerateDatas\json ^
-x bin.outputDataDir=..\GenerateDatas\bin

危险

请不将多个outputCodeDir指向相同目录,也不要将多个outputDataDir指向相同目录,它们会互相覆盖!