测试修改

This commit is contained in:
dingxiaowei
2024-10-15 17:01:49 +08:00
parent a34618ab37
commit 01620a4b0c
+22
View File
@@ -1,13 +1,17 @@
# ExcelTool(Unity打表工具) # ExcelTool(Unity打表工具)
通用CSV/Excel打表工具 通用CSV/Excel打表工具
#### 前言 #### 前言
目前项目中用的csv转json工具,会带来严重的gc性能问题,例如启动加载慢,影响帧率等问题,转成的json数据,我们需要手动写对应的解析模板代码,所以针对以上问题,本通用打表工具应运而生,用二进制数据替代json数据会比较好的解决性能问题,而且能够自动生成对应的模板代码,节省了写重复代码的时间,而且二进制数据比json读取速度更快,文件大小更小。 目前项目中用的csv转json工具,会带来严重的gc性能问题,例如启动加载慢,影响帧率等问题,转成的json数据,我们需要手动写对应的解析模板代码,所以针对以上问题,本通用打表工具应运而生,用二进制数据替代json数据会比较好的解决性能问题,而且能够自动生成对应的模板代码,节省了写重复代码的时间,而且二进制数据比json读取速度更快,文件大小更小。
#### 说明 #### 说明
因为csv有默认的逗号,这跟表中内容配置逗号会有冲突,不利于解析,所有产生了加强版的ExcelTool,读取路径下的csv和excel表格,如果是csv的这先转换成xlsx的excel,然后统一对excel进行数据读取解析操作,生成完之后再把csv生成的excel删掉,确保目录保持原样,所以ExcelTool是CsvTool的升级版 因为csv有默认的逗号,这跟表中内容配置逗号会有冲突,不利于解析,所有产生了加强版的ExcelTool,读取路径下的csv和excel表格,如果是csv的这先转换成xlsx的excel,然后统一对excel进行数据读取解析操作,生成完之后再把csv生成的excel删掉,确保目录保持原样,所以ExcelTool是CsvTool的升级版
#### 功能 #### 功能
* 支持csv和Excel的打表 * 支持csv和Excel的打表
* 生成对应的数据模板代码 * 生成对应的数据模板代码
* 支持生成模板代码字段注释 * 支持生成模板代码字段注释
@@ -17,17 +21,20 @@
* 字段不配置会使用默认数值 * 字段不配置会使用默认数值
#### 目前支持的字段 #### 目前支持的字段
* 常规的字段,例如intfloatstringboollong,list,intlist,longlist,floatlist,boollist,List<T> 大小写不限 * 常规的字段,例如intfloatstringboollong,list,intlist,longlist,floatlist,boollist,List<T> 大小写不限
* 支持自定义字段 vector,例如[1,2,3] * 支持自定义字段 vector,例如[1,2,3]
* 支持自定义字段 list,其实是vector数组,例如[[1,2,3],[2,3,4],[4,5,6]] * 支持自定义字段 list,其实是vector数组,例如[[1,2,3],[2,3,4],[4,5,6]]
#### 效果 #### 效果
![](img/1.gif) ![](img/1.gif)
![](img/2.jpg) ![](img/2.jpg)
相比较json,二进制文件大小只有其1/4 相比较json,二进制文件大小只有其1/4
##### 自动生成的模板代码 ##### 自动生成的模板代码
``` ```
/* /*
* auto generated by tools(注意:千万不要手动修改本文件) * auto generated by tools(注意:千万不要手动修改本文件)
@@ -191,7 +198,9 @@ public partial class avatarguideTestConfig : IBinarySerializable
``` ```
#### 使用案例 #### 使用案例
##### 解析二进制文件 ##### 解析二进制文件
``` ```
IBinarySerializable newavList = new avatarguideTestList(); IBinarySerializable newavList = new avatarguideTestList();
var readOK = FileManager.ReadBinaryDataFromFile(Path.Combine(path, "avatarguideTest.dat"), ref newavList); var readOK = FileManager.ReadBinaryDataFromFile(Path.Combine(path, "avatarguideTest.dat"), ref newavList);
@@ -204,10 +213,13 @@ else
ConsoleHelper.WriteErrorLine("读取失败"); ConsoleHelper.WriteErrorLine("读取失败");
} }
``` ```
![](img/3.jpg) ![](img/3.jpg)
##### Unity解析二进制 ##### Unity解析二进制
将二进制文件(后缀必须是.bytes)放在Resources目录,然后通过Resources.Load接口加载 将二进制文件(后缀必须是.bytes)放在Resources目录,然后通过Resources.Load接口加载
``` ```
var bytes = Resources.Load<TextAsset>("avatarguideTest"); var bytes = Resources.Load<TextAsset>("avatarguideTest");
if (bytes == null) if (bytes == null)
@@ -233,6 +245,7 @@ else
``` ```
#### 泛型读表 #### 泛型读表
``` ```
T ReadTable<T>(string tableName) where T : IBinarySerializable, new() T ReadTable<T>(string tableName) where T : IBinarySerializable, new()
{ {
@@ -253,7 +266,9 @@ if (bytes != null)
return default(T); return default(T);
} }
``` ```
##### 查询数据 ##### 查询数据
``` ```
var avatarguideTest = (avatarguideTestConfig)newavList; var avatarguideTest = (avatarguideTestConfig)newavList;
var obj = avatarguideTest.QueryById(2); var obj = avatarguideTest.QueryById(2);
@@ -262,6 +277,7 @@ if (obj != null && obj.Count() > 0)
``` ```
#### 自动化拷贝批处理 #### 自动化拷贝批处理
``` ```
@echo off @echo off
@@ -277,9 +293,11 @@ pause
``` ```
#### 扩展类方法 #### 扩展类方法
上面的config类采用的是partical class 就是为了方便扩展自定义的方法,如果想要添加自定义方法也定义一个partical class文件作为扩展即可 上面的config类采用的是partical class 就是为了方便扩展自定义的方法,如果想要添加自定义方法也定义一个partical class文件作为扩展即可
#### 待扩展的功能 #### 待扩展的功能
目前还不是最理想的状态,还有很多可以扩展完善的功能,如下: 目前还不是最理想的状态,还有很多可以扩展完善的功能,如下:
* 支持生成各种类型的文件,例如json、xml、proto、lua等 * 支持生成各种类型的文件,例如json、xml、proto、lua等
@@ -290,9 +308,13 @@ pause
* 支持枚举类型 * 支持枚举类型
#### 代码 #### 代码
https://github.com/dingxiaowei/ExcelTool 喜欢麻烦点个star吧 https://github.com/dingxiaowei/ExcelTool 喜欢麻烦点个star吧
#### Unity客户端使用范例 #### Unity客户端使用范例
采用的美术效果机型适配商业化解决方案Demo 采用的美术效果机型适配商业化解决方案Demo
https://github.com/dingxiaowei/DeviceGrading https://github.com/dingxiaowei/DeviceGrading
优雅的表格使用范本 优雅的表格使用范本
todo: