全文提要

Excel 数据表规则与类型说明

本文档用于说明 Excel 数据表在数据自动生成与加密存储流程中的结构规范与类型写法。
确保所有表格内容可被 DataGenToolDataEncryptTool 正确解析为 C# 数据类并加密保存。


一、表格结构

行号 内容说明 示例
第 1 行 字段名(C# 变量名) idnameposition
第 2 行 字段类型 intstringVector3ItemData[]
第 3 行 字段描述(可为空) 唯一ID物品名称出生坐标
第 5 行起 数据内容 实际数据行

字段名需为合法 C# 变量(字母/数字/下划线),建议首字母小写。


二、字段类型与写法

1. 基础类型

类型 示例 解析 说明
int 1001 内置解析 整数
float 3.14 内置解析 单精度浮点
double 2.71828 内置解析 双精度浮点
bool true / false / 1 / 0 内置解析 布尔值

2. 数组类型

类型 示例 解析 说明
int[] [1,2,3] 内置解析 可省略中括号
float[] [0.1,0.2,0.3] 内置解析 支持浮点
string[] ["A","B","C"]A,B,C 内置解析 自动去引号与空格
ItemData[] [{"id":1,"name":"A"},{"id":2,"name":"B"}] JSON 解析 解析为数组

3. Unity 常用结构

类型 示例 解析 说明
Vector2 (1,2) 内置解析 new Vector2(1,2)
Vector3 (1,0,2) 内置解析 new Vector3(1,0,2)
Color #FF0000(1,0,0) 内置解析 支持十六进制与浮点

4. 集合类型(List)

类型 示例 解析 说明
List<int> [1,2,3]1,2,3 内置解析 自动分割或 JSON 数组
List<string> ["A","B","C"] 内置解析 自动去引号
List<Vector3> [(1,0,0),(0,1,0)] 内置解析 推荐使用括号或 JSON 格式
List<ItemData> [{"id":1,"name":"A"},{"id":2,"name":"B"}] JSON 解析 支持 JSON 数组

5. 自定义类

类型 示例 解析 说明
ItemData {id:1,name:"Sword"} JSON 解析 自动反序列化为类
MonsterData {id:100,level:5,pos:(1,0,1)} JSON 解析 支持嵌套结构

6. 字典类型

类型 示例 解析 说明
Dictionary<string,int> {"gold":10,"diamond":5} JSON 解析 最基础的键值对结构
Dictionary<int,string> {1:"A",2:"B"} JSON 解析 键值为数字,值为字符串
Dictionary<string,float[]> {"Speed":[1.2,2.5,3.0],"Attack":[10,15,20]} JSON 解析 值为数组
Dictionary<string,List<int>> {"GroupA":[1,2,3],"GroupB":[4,5,6]} JSON 解析 值为列表
Dictionary<string,ItemData> {"Sword":{"id":1,"name":"Blade"},"Shield":{"id":2,"name":"Guard"}} JSON 解析 值为自定义类
Dictionary<int,ItemData[]> {1:[{"id":1,"name":"A"}],2:[{"id":2,"name":"B"}]} JSON 解析 值为自定义类数组
Dictionary<string,Dictionary<string,int>> {"PlayerA":{"HP":100,"MP":50},"PlayerB":{"HP":200,"MP":80}} JSON 解析 多层嵌套字典
Dictionary<string,List<ItemData>> {"LootA":[{"id":1,"name":"Coin"},{"id":2,"name":"Key"}],"LootB":[{"id":3,"name":"Gem"}]} JSON 解析 值为自定义类列表
Dictionary<string,Vector3> {"A":"(1,0,0)","B":"(0,2,0)"} JSON 解析 值为向量对象(字符串形式)

7. 特殊类型

类型 示例 解析 说明
DateTime 2025-10-27 14:00:00 内置解析 转为 System.DateTime
Color #RRGGBB(r,g,b) 内置解析 支持两种格式
bool true / false / 1 / 0 内置解析 不区分大小写

三、示例

id name position drops stats bossData
int string Vector3 int[] StatData List
唯一标识 名称 坐标 掉落物 属性 Boss 数据
1 “Slime” (0,0,0) [1001,1002] {hp:100,atk:10,def:5} [{“id”:2001,“name”:“King”},{“id”:2002,“name”:“Queen”}]

对应类结构:

public class MonsterData
{
    public int id;
    public string name;
    public Vector3 position;
    public int[] drops;
    public StatData stats;
    public List<ItemData> bossData;
}


四、加载示例

// 默认数据(StreamingAssets)
var monsters = FilesUtil.LoadDefaultData<MonsterDataContainer>("Data/Monster/MonsterData");

// 本地数据(PersistentDataPath)
var player = FilesUtil.LoadLocalData<PlayerDataContainer>("Data/Player/PlayerData");