Unity与Luban表交互

鲁班表

前情提要

最近项目上需要接入鲁班表来导出bena和protobuf,但是按照他样例给的只能实现简单的json导出,离支持热更和自定义命名空间还很远


set WORKSPACE=..
set LUBAN_DLL=Tools\Luban\Luban.dll
set CONF_ROOT=.

dotnet %LUBAN_DLL% ^
    -t all ^
    -c cs-simple-json ^
    -d json ^
    --conf %CONF_ROOT%\luban.conf ^
    -x outputCodeDir=%WORKSPACE%\CardGame\Assets\Scripts\GameMain\DataTables\ ^
    -x outputDataDir=%WORKSPACE%\CardGame\Assets\Tables\

pause

成熟的开源项目

UnityGameFramework_HybridCLR

这个项目结合了GF和HybriCLR他生成的Table类可以继承自定义的结构,尝试进行分析


<root>

	<topmodule name="Game.Hotfix.Cfg"/>

    <option name="editor.topmodule" value="Game.Cfg"/>

	<patch name="cn"/>
	<patch name="tw"/>
	<patch name="en"/>
	<patch name="jp"/>

	<group name="c" default="1"/> client
	<group name="s" default="1"/> server
	<group name="e" default="1"/> editor

	<import name="."/>

	<importexcel name="__tables__.xlsx" type="table"/> 相对data目录
	<importexcel name="__enums__.xlsx" type="enum"/>相对data目录
	<importexcel name="__beans__.xlsx" type="bean"/>相对data目录

	<externalselector name="unity_cs"/>
	<externalselector name="ue_cpp"/>
    <externalselector name="dotnet_cs"/>

	<service name="server" manager="Tables" group="s"/>
	<service name="client" manager="Tables" group="c"/>
	<service name="all" manager="Tables" group="c,s,e"/>

</root>

实际上luban提供了修改模板的途径

 Luban/DataTemplates/cs-simple-json/table.tpl

还可以支持Table接口类继承自定义的ILubanTables 实现异步加载, 本地化校验之类的额外功能