生成代码和数据
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-json
中cs
表示生成c#语言代码,simple
表示使用SimpleJson加载json文件,json
表示加载json数据。所有的codeTarget都遵循这个命名规则。
对于同一种数据格式(如json),为所有语言生成的数据文件都是一样的。也就是导出数据不受-c
参数影响。
更多的codeTarget可见 CodeTarget列表。
请不将outputCodeDir
和outputDataDir
指向相同目录,它们会互相覆盖!
同时生成代码和数据
运行两次命令分别生成代码和数据不仅麻烦,也增加了生成时间。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
指向相同目录,它们会互相覆盖!