基本信息

[官方文档 Focus Creative Games (focus-creative-games.github.io)](https://focus-creative-games.github.io/luban/start_up/#安装)

按要求下载Example项目

目录下luban_examples-main\MiniTemplate是演示项目

luban_examples\MiniTemplate
│  .cache.meta                     # luban缓存文件
│  gen.bat                         # bat 生成脚本
│  gen.sh                          # sh 生成脚本
│
├─Datas                            # 数据源目录
│      item.xlsx                   # excel 数据源文件
│      __beans__.xlsx              # bean 定义文件,可以使用xml定义代替
│      __enums__.xlsx              # enum 定义文件,可以使用xml定义代替
│      __tables__.xlsx             # table 定义文件,可以使用xml定义代替
│
├─Gen                              # 生成的代码目录
├─output_json                      # 生成的json文件目录
└─Defines
        __root__.xml               # luban 根文件

可以右键编辑bat脚本

set GEN_CLIENT=dotnet ..\Tools\Luban.ClientServer\Luban.ClientServer.dll

%GEN_CLIENT% -j cfg --^
 -d Defines\__root__.xml ^v 
 --input_data_dir Datas ^   
 --output_data_dir output_json ^
 --output_code_dir Gen ^
 --gen_types code_cs_unity_json,data_json ^
 -s all
pause
  1. root.xml

记录了配置信息

<root><topmodule name="cfg"/><patch name="cn"/><patch name="en"/><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目录

​    <service name="server" manager="Tables" group="s"/><service name="client" manager="Tables" group="c"/><service name="all" manager="Tables" group="c,s,e"/>
</root>
  1. input_data_dir

表格数据

  1. output_data_dir

生成表数据的文件夹

  1. output_code_dir

生成代码数据的文件夹

  1. gen_types

生成类型

表格配置

Table

image-20230217180000231

  1. ##var

属性名称

  1. ##type

属性类型,需要关注几种特殊用法

int#ref=item.TbItem

引用,会自动生成以下代码

public int UpgradeToItemId { get; private set; }
public item.Item UpgradeToItemId_Ref { get; private set; }

其中item.Item是一行数据类

(list#sep=;),item.ItemExchange

数据列表

Bean

相当于定义Class类,提前定义好后,可以在表格中直接配置

image-20230217175600730

约等于定义了一个ItemExchange类,会存放到指定模块/文件夹中(item)

可以在其他表格中直接使用这个类

导出表

直接运行bat导出即可

装入项目

把MiniTemplate拷贝到Asset同级

image-20230217182013577

把Tool文件内的工具dll拷贝到LuBan同级目录内

..\Tools\Luban.ClientServer

在Asset内创建两个文件夹作为数据存放目录

Assets/LuBan/GenCode

Assets/LuBan/Json

同时修改bat文件

–output_data_dir ..\Assets\LuBan\Json ^

–output_code_dir ..\Assets\LuBan\GenCode^

运行bat后应该可以成功导出

最后再把MiniJson库拷贝到项目中,需要开启代码unsafe模式

luban_examples-main\Projects\Csharp_Unity_bin_or_json\Assets\LubanLib

使用

一行代码加载所有配置

var tables = new cfg.Tables(file => 
    JSON.Parse(
        File.ReadAllText($"{Application.dataPath}/LuBan/Json" + "/" + file + ".json")
    ));

然后就可以轻松使用了

var item = tables.TbItem.Get(10000);
Debug.Log($"{item.Id}  {item.Name}");

image-20230217184834764

封装一个极简版Manager

public class LuBanManager
{
    private static LuBanManager _instance;

    public static LuBanManager Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new LuBanManager();
            }

            return _instance;
        }
    }
    public Tables allTables;
    
    public void Init()
    {
        allTables = new cfg.Tables(file =>
            JSON.Parse(File.ReadAllText($"{Application.dataPath}/LuBan/Json" + "/" + file + ".json")
            ));
    }
}