制作方式简介
- 最简单的就是直接将 Excel 里的数据复制粘贴到文本文件中作为游戏数据。
- 手动导出为 CSV。
- 使用 Shell 或 Bat( Window 批处理)设计自动化流程操作。
- 通过特定语言编写自动化程序。
- 使用 Jenkins 来强化自动化流水线。
- 使用 Unity3D 的菜单栏编辑功能。
让数据使用起来更加方便
数据表的关键作用是连接游戏策划设计师与其他部门,所以我们在制定数据导入/导出规则的时候需要考虑设计师的体验因素。如何让策划在配置数据表的时候能够有更好的体验就成了关键。
只有好用才能提高效率。前面提到的自动化就是提高效率的一种方法,还有比如一键转化XXX,这种形式的也是提高效率的好办法。
团队间、部门间、工种间的配合
情况:如果只是单个表有了自动化,策划设计人员可以自由的将 Excel 数据转化成能让程序员读取的数据格式。
问题一:如果数据经常变动,每次更改都需要及时得到通知程序员。
解决:将单个表变为多个表的自定义配置,将所有策划内容的数据表和导出规则都由策划来指定填写。 在程序命令中预留几个参数,参数指向某个需要导出的文件及 sheet。那么在命令行里,执行这个程序且后面跟上参数就能导出数据。
问题二:策划并不能很好的控制对表的导出内容。比如要新增一个表,或者修改某个表的文件名,或者修改某个表文件里的 sheet,这项工作还是需要修改命令行来完成。
解决:可以增加一个 Excel 表,表中填有具体要导出哪些 Excel 文件里的哪个 sheet,这些 sheet 的数据导出后的文件名是什么,以及生成文件后应该转移到哪个文件夹中去。
问题三:如果设计人员改了字段名字,插入了新的字段,删除了字段,又没有及时通知程序员,或者说忘记了自己做过什么,就需要全盘彻查。
解决:增加让 Excel 字段名与程序对应的规则。编写一个程序,让程序生成一段代码,这段代码里变量定义的数字和每个数据表上字段名的索引对应,将每个要导出的 sheet 里的头行的列名作为变量名写入程序变量定义中,以方便程序在读取数据表时列名与数据表对齐。这样不仅有了读取数据表列的 Key 值,还无形中进行了表数据与程序索引的校验。
最终效果:让策划设计人员完全可以自己控制 Excel 数据表的操作,又加入了检查校验和修复的功能,让程序员在数据表衔接部分也能进行检查和校验。
例子
ID | Name | Age |
1000 | ROLR_NAME_0 | 20 |
1001 | ROLR_NAME_1 | 21 |
生成的索引对齐方式代码:
public Class ExcelDefine
{
public const int role_role_ID = 1;
public const int role_role_Name = 2;
public const int role_role_Age = 3;
}
//获取名字的例子
string role_name_str = RoleTable.GetStr(ExcelDefine.role_role_Name);
int table_role_id = RoleTable.GetInt(ExcelDefine.role_role_ID);
策划修改之后:
Identifier | School | Name |
1000 | SCHOOL_0 | ROLR_NAME_0 |
1001 | SCHOOL_1 | ROLR_NAME_1 |
生成的代码如下:
public Class ExcelDefine
{
public const int role_role_Identifier = 1;
public const int role_role_School = 2;
public const int role_role_Name = 3;
}
//原本的代码会报错
string role_name_str = RoleTable.GetStr(ExcelDefine.role_role_Name);
int table_role_id = RoleTable.GetInt(ExcelDefine.role_role_ID);
//应该改成以下代码
string role_name_str = RoleTable.GetStr(ExcelDefine.role_role_Name);
int table_role_id = RoleTable.GetInt(ExcelDefine.role_role_Identifier);