由于数据表模块支持自定义数据表格式,这里先介绍创建默认内置格式的数据表。
使用 Microsoft Excel 创建一个数据表,数据内容根据实际情况而定,然后保存为制表符分割的文本文件格式。
下面是个 Microsoft Excel 建表的示例:
用记事本等文本软件打开的效果大概是这个样子:
如果比较熟练的话,也可以直接使用记事本之类的文本编辑工具进行创建,但注意确保编码是ANSI。
说明:
- “#”开头的行为注释行,读取时会忽略所有的注释行。
- 示例中的第2、3行为推荐的注释格式,标注表列在代码中对应的属性名和属性类型(后续可使用工具生成数据表对应的代码文件)。
- 每行数据必须有一个 int 型的索引号,不能重复,可以不连续,也可以乱序(但建议有序),示例中的索引列是 Id。
- int、float 等需要解析的值类型,不要为空,要确保在 C# 中,int.Parse、float.Parse能正确解析。
- 数据是字符串类型时,不要使用汉字等非 ANSI 标准字符,注释行、备注列除外,如姓名之类的数据,建议填写本地化字典号,后续结合本地化模块显示中文。
- 数据表平时可由游戏策划使用 Microsoft Excel 进行维护。
为了读取这个数据表,需要定义以下代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
using GameFramework.DataTable; using System.Collections.Generic; namespace Game { /// <summary> /// 场景配置表。 /// </summary> public class DRScene : IDataRow { /// <summary> /// 场景编号。 /// </summary> public int Id { get; protected set; } /// <summary> /// 场景名称。 /// </summary> public string Name { get; private set; } /// <summary> /// 资源名称。 /// </summary> public string AssetName { get; private set; } /// <summary> /// 背景音乐编号。 /// </summary> public int BackgroundMusicId { get; private set; } public void ParseDataRow(string dataRowText) { string[] text = dataRowText.Split('\t'); int index = 0; index++; // 跳过注释列 Id = int.Parse(text[index++]); index++; // 跳过备注列 Name = text[index++]; AssetName = text[index++]; BackgroundMusicId = int.Parse(text[index++]); } private void AvoidJIT() { // 避免 iOS 系统产生 JIT 异常 new Dictionary<int, DTScene>(); } } } |
相关 API 参考手册
- 本文固定链接: https://gameframework.cn/uncategorized/创建默认内置格式的数据表/
- 转载请注明: Ellan 于 Game Framework 发表
《创建默认内置格式的数据表》有 3 条评论