com.typhoon.tabletool
Version:
71 lines (48 loc) • 5.35 kB
Markdown
**tabletool**
**配置表工具,包含代码生成,支持自定义类型**
支持Resource或Addressable加载
Unity版本:2018及以上
**安装**
1. Editor->ProjectSettings->PackageManager->Scoped registries,添加条目:
Name:Typhoon URL:https://registry.npmjs.org Scope(s):com.typhoon 也可以手动编辑Package文件夹内的mainfest.json,添加条目: "scopedRegistries": [ { "name": "Typhoon", "url": "https://registry.npmjs.org", "scopes": [ "com.typhoon" ] } ]
1. 打开PackageManager窗口等待刷新,左上角选择My Registries一栏选中插件导入即可
2. 安装完毕后,顶部菜单会多出”配置表工具“
3. 菜单栏:配置表工具-->选项,完成安装后,按需求进行设置,保存并应用即可完成部署
4. 菜单栏:配置表工具-->打开文件夹,可方便跳转到配置表文件夹
5. 菜单栏:配置表工具-->一键导表,生成代码和对应的配置表资源
**使用说明**
sheet前三行空出,**第一行填标签**,**第二行注释或者说明**,**第三行填字段名**(主要用于代码导出,注意命名)
**注意事项:**
1. 仅支持xlsx文件,单个xlsx可以存在多个sheet
2. sheet命名规范:中文名|英文名,如果需要忽略不导出追加”|#ignore“,例如:装备|equip|#ignore
3. 除了#link或者#ignore所在列外,都需要有类型标签,例如#int,#float...
**标签说明:**
| 标签名 | 说明 |
| ------------------------------------------------------ | ------------------------------------------------------------ |
| #key | 唯一标识列(ID列),用来校验key或者被#link进行表间查找,该列成员只能为int或者string,暂不支持其它类型做为key |
| #item>对象名[成员名]>子对象名[成员名]>孙对象名[成员名] | 二次封装Object,[成员名]为可选项,不填取对象名作为类型名称 |
| #link>表格名>匹配列名 | 关联到其它表的某行数据,#link描述的列不需要填写类型标签,例如#int,#float,它会以关联表对应的列项为准 |
| #ignore | 忽略项,对应列无效,不导出(一般用于补充对应行的说明) |
| #enumvalue | 对应列为枚举值,需要和#key#int一起使用,一个sheet只能存在一个#enumvalue,搭配#enumname生成枚举 |
| #enumname | 对应列为枚举名,需要和#string一起使用,一个sheet只能存在一个#enumname,搭配#enumvalue生成枚举 |
| #int | int类型 |
| #long | long类型 |
| #float | float类型 |
| #double | double类型 |
| #bool | bool类型 (1为ture,0为false) |
| #string | string类型 |
| #array | int[]类型,数据用‘\|’分割,例如:1\|2\|3\|4\|5 |
| #array | long[]类型,数据用‘\|’分割,例如:1\|2\|3\|4\|5 |
| #array | float[]类型,数据用'\|'分割,例如:0.1\|0.2\|0.3 |
| #array | double[]类型,数据用'分割',例如:0.1\|0.2\|0.3 |
| #array | bool[]类型,数据用‘\|’分割,例如:1\|0\|1\|1 |
| #array | string[]类型,数据用‘\|’分割,例如:AA\|BB\|CC\|DD |
**相关API**
**初始化**
//初始化(同步模式,仅支持Resource模式) TableHelper.Build(); //初始化(异步模式) await TableHelper.BuildAsync();
**查询**
//查询指定表,对应列,匹配ID项(比较少用) TableHelper.AllTables.GetTable("表名").Get("列名", "字符串ID"); TableHelper.AllTables.GetTable("表名").Get("列名", 数字ID); //使用自动生成的API查询对应的表项,例如: TableHelper.AllTables.FindTableValueExampleById(1); TableHelper.AllTables.FindTableValueExampleByName("数据1");
**检查**
//是否存在表 TableHelper.AllTables.HasTable(填表名); //是否存在表项 TableHelper.AllTables.HasTableValue(填表名,填列名,填ID); //指定表检查 TableHelper.AllTables.valueExample.Has(填列名,填ID);
**遍历**
//例如:遍历valueExample表 var tableList = TableHelper.AllTables.valueExample.Data; foreach (var element in tableList) { Debug.Log(element.Name); }