Skip to content

Latest commit

 

History

History

DataTableExtension

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

UGFDataTableExtension

UnityGameFramework中DataTable模块的扩展 支持List,数组,字典 不支持嵌套 只支持一维 新增对枚举的支持

新增配置表的按需读取

使用教程

使用本工具需要熟悉UnityGameFramework 框架中DataTable模块

使用时需要将DataTableComponentDatatableHelper 替换为 UGFExtensions.DataTableHelper

配置数据表

使用如(Microsoft Excel,Wps)等工具编辑表格 保存时文件类型选择 文本文件(制表符分隔)(*.txt) 格式也可以自定义 如使用自定义分隔符分隔 需修改 DataTableProcessor.cs文件中的DataSplitSeparators。

或使用自带Unity菜单栏中 DataTable/DataTableEditor 编辑表格。

新增: 支持从Excel直接生成二进制和脚本(只支持xlsx格式)。从Excel生成时 二进制文件和脚本名使用Excel SheetName 支持多Sheet

List在数据表中的类型为配置 list<type> (不区分大小写)。 type为实现了GenericDataProcessor的类型 List内置类型使用 ,进行分割 其他类型使用 | 进行分割

例:

list<int> list<vector3>
1,2,3 12.34,23.22,34.22|12.34,23.22,34.22|12.34,23.22,34.22

数组在数据表中的类型为配置 type[] (不区分大小写) type为实现了GenericDataProcessor的类型 内置类型使用 ,进行分割 其他类型使用 | 进行分割

例:

int[] vector3[]
1,2,3 12.34,23.22,34.22|12.34,23.22,34.22|12.34,23.22,34.22

Dictionary在数据表中的类型为配置 dictionary<keyType,valueType> (不区分大小写)。键值类型为实现了GenericDataProcessor的类型 。

key value 使用# 进行分割,不同元素在表中使用 | 进行分割 。

例:

dictionary<int,int> dictionary<int,vector3>
{1#1}|{2#2}|{3#3} {1#0.2,1.5,100}|{2#222,444,111}|{3#3.15,385.123,123}

枚举类型在数据表中的类型为 枚举全名 值为枚举对应的int值 或 string 枚举项名称

例如:

namespace Test
{
    public enum TestEnum
    {
        None = 0,
        Test1 = 1,
        Test2 = 2
    }
}
数据表中类型 Test.TestEnum
0
Test1

注意:枚举类型在作为集合中的元素时 需要生成Extension 否则会导致找不到解析函数问题枚举类型不支持在不同Assembly 下 存在同名枚举  在生成扩展过程中会 报异常提醒 请注意修改。 

注意:string类型不能在字符串中出现分隔符 不然会导致分割出错。

GF中实现了GenericDataProcessor的类型有22中 为Boolean,Byte,Char,Color,Color32,DateTime,Decimal,Double,Single,Int32,Int64,Quaternion,Rect,SByte,Int16,String,UInt32,UInt64,UInt16,Vector2,Vector3,Vector4 自定义类型可以自行扩展。

生成数据实体类

关于数据表用到的配置存放在 DataTableConfig.cs

注释 变量名
数据表存放文件夹路径 DataTablePath
数据表C#实体类生成文件夹路径 CSharpCodePath
数据表C#实体类模板存放路径 CSharpCodeTemplateFileName
数据表扩展类文件夹路径 ExtensionDirectoryPath
数据表命名空间 NameSpace
数据表中使用类型 所在的所有程序集 AssemblyNames
编辑器中使用到的程序集 EditorAssemblyNames
数据表文件路径 DataTablePaths
数据表文件名 DataTableNames

扩展类中 BinaryReaderExtension.csDataTableExtension.cs 为默认解析类 不会自动生成 如更改扩展类路径 请自行拷贝。

  1. 使用Unity菜单栏中 DataTable/Generate DataTables/From Txt 根据Txt 格式Datatable 生成数据实体类及二进制文件
  2. 使用Unity菜单栏中 DataTable/Generate DataTables/From Excel 根据Excel 格式Datatable 生成数据实体类及二进制文件
  3. 使用Unity菜单栏中 DataTable/ExcelToTxt 通过excel生成对应 Txt.

PS: 调用 Generate DataTables 方法时会自动调用 GenerateExtensionByAnalysis 生成解析扩展类。

加载使用

请自行查看UnityGameFramework 中DataTable模块使用方法

配置表按需读取说明

  1. 使用Unity菜单栏中 DataTable/Generate DataTables/From Txt Use FileSystem 根据Txt 格式Datatable 生成数据实体类及二进制文件

    或者使用Unity菜单栏中 DataTable/Generate DataTables/From Excel Use FileSystem 根据Excel 格式Datatable 生成数据实体类及二进制文件

  2. 加载需要使用DataTableExtensionComponent 其中接口均为 同步读取。

    • 按需加载数据表 需要先加载配置 LoadDataTableRowConfig 参数为 资源的 Assets全路径
    • 加载时使用GetDataRow 获取对应行数据
    • 加载全部数据 使用GetAllDataRows
  3. 打包AB 时 数据表加载 必需要设置为 Load From Binary

  4. 不支持webgl

引用库

EllanJiang/UnityGameFramework

shaun-he/DataTableEditor: 一个Unity的数据表编辑器工具