ET框架Excel配置持久化数据类(自动生成源码)

ET框架的Excel配置器

Excel配置器作用

​ Excel文件的配置主要用以配置数据持久化对象的数据,并且可以根据Excel中设置的字段,自行创建持久化的类,并将配置的数据进行实例化,放入config配置文件的字典中。
使用方式即为打开ET/Excel文件夹,Windows下双击运行win_startExcelExport.bat文件即可完成对Excel内容的读取和配置生成相应的源码并将数据实例化成持久化对象。

Excel配置的规则

UnitConfig.xlsx
在这里插入图片描述

  • 绿色位置第一行为描述,第二行为字段名称,第三行为字段类型(特殊类型需拓展)

  • 左上角的第一个表头必须在3行3列,且其名称和字段名都必须是Id,类型为int,且此列绝不可重复

  • #放在一行或一列前代表忽略此行,在读取配置文件时会自动忽略此行或列。

  • 数据的配置必须符合字段类型,不合法会报错

在这里插入图片描述

  • 在列或行前若不添加s或c,则默认会将配置代码和文件同时生成到客户端和服务端下,若配置后,可指定此列或行只配置进客户端或服务端。
  • 若在Excel左上角填写s或c则会指定整个excel配置是在服务端还是客户端下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0TrqVWx-1646989417081)(ET框架的Excel配置.assets/image-20220311125340116-16469744215194.png)]

  • 配置会自动忽略空白行,可以在空白行前添加#注释 对数据进行分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LGZ5i522-1646989417081)(ET框架的Excel配置.assets/image-20220311125524735-16469745265455.png)]

  • 若Excel表存在多个表单,其不同表单对应的表头必须一致,其会自动将不同表单的数据合并,表头不一致会报错。
  • 若想要忽略表单,可以在表单名前加#符号

生成的配置文件查看

​ 在配置好相关的Excel表格后,每次修改后都需要运行目录下的.bat文件会生成代码文件并生成配置文件。在ET/Config和Unity/Assets/Bundles/Config下的bytes文件是经过protobuf序列化的文件,不是明文。

​ 在ET/Bin/Json目录下可查看明文的json配置文件,分为client和server的配置文件。

配置生成的源码规则

UnitConfig.xlsx
在这里插入图片描述

UnitConfig.cs

在这里插入图片描述

UnitConfigCategory 单例类

在这里插入图片描述

可以看出Excel配置文件会产生两个基于Excel表明的数据持久化类和其Category类

  • 数据持久化类的字段名和类型和excel表头字段名和类型一一对应

  • Category类会存有数据持久化类具体的实体对象的集合(字典和列表),字典的键就是excel固定的Id字段的值

  • Category类提供了UnitConfig Get(id) 和Dictionary GetAll()的方法供外部进行获取持久化对象

在这里插入图片描述

持久化类的拓展

​ 有时自动生成的Category类或持久化类并不能满足需求,需要对其进行方法或字段属性上的拓展(例如想通过身高找特定UnitConfig),可以利用partial关键字进行拓展,此关键字修饰的同名类在编译时会共享属性和方法,相当于将两个类合并起来。

一般会在Generate文件夹下创建一个ConfigPartial文件夹存放拓展的partial类

UnitConfigPartial.cs 其中类名放入需要拓展的同名类

在这里插入图片描述

实现此类后,就可用Category单例类通过身高获取特定的UnitConfig对象了。

Category还提供了EndInit当初始化完成后,AfterEndInit在EndInit后等等多样的回调函数的虚方法,也可在拓展partial中进行重写,比如为UnitConfig拓展新变量,当初始化结束后就自动用初始字段为拓展变量进行初始化。

举例如下,为UnitConfig持久化类添加三维向量,三维向量存储对象的三维(位置,身高,体重)

在这里插入图片描述

支持的数据类型及数组用法

在ExcelExporter.cs中可以查看支持的类型
在这里插入图片描述

特殊用法

  • 数组类型的使用 : 采用逗号进行间隔即可

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Q540670228/article/details/123429437