# 模板 支持代码模板和数据模板,可以灵活定制生成的代码和数据。 ## 代码模板 使用scriban模板文件定制导出数据格式。例如生成cs语言bin数据格式的cfg.Tables类的模板如下。 ``` using Bright.Serialization; {{ name = x.name namespace = x.namespace tables = x.tables }} namespace {{namespace}} { public sealed class {{name}} { {{~for table in tables ~}} {{~if table.comment != '' ~}} /// /// {{table.comment}} /// {{~end~}} public {{table.full_name}} {{table.name}} {get; } {{~end~}} public {{name}}(System.Func loader) { var tables = new System.Collections.Generic.Dictionary(); {{~for table in tables ~}} {{table.name}} = new {{table.full_name}}(loader("{{table.output_data_file}}")); tables.Add("{{table.full_name}}", {{table.name}}); {{~end~}} {{~for table in tables ~}} {{table.name}}.Resolve(tables); {{~end~}} } public void TranslateText(System.Func translator) { {{~for table in tables ~}} {{table.name}}.TranslateText(translator); {{~end~}} } } } ``` ### 数据模板 使用scriban模板文件定制导出数据格式。例如自定义的lua数据模板如下: ``` // {{table.name}} {{for d in datas}} // {{d.impl_type.full_name}} {{~i = 0~}} {{~for f in d.fields~}} {{~if f ~}} // {{d.impl_type.hierarchy_export_fields[i].name}} = {{f.value}} {{~end~}} {{~i = i + 1~}} {{~end~}} {{end}} ``` 输出数据 ``` // TbItem // item.Item // id = 1 // name = 钻石 // major_type = 1 // minor_type = 101 // max_pile_num = 9999999 // quality = 0 // icon = /Game/UI/UIText/UI_TestIcon_3.UI_TestIcon_3 // item.Item // id = 2 // name = 金币 // major_type = 1 // minor_type = 102 // max_pile_num = 9999999 // quality = 0 // icon = /Game/UI/UIText/UI_TestIcon_1.UI_TestIcon_1 ```