为什么要使用Excel配置数据?
在游戏开发过程中,会涉及到大量各种各样的数据。为了方便策划调整,往往会将这些数据独立出来,单独放置某些所谓的配置文件中。由于Excel编辑器功能强大,便成为策划们的首选。
怎么使用Excel配置数据?
Excel文件并非纯数据文件格式,本质上是一些xml文件,并由zip压缩而成。其中除了包含我们想要的数据之外,还包含大量诸如:格式描述,等对于游戏来说无用的数据。如果将这些数据一并打包到游戏中,在游戏加载的时候,不仅影响加载速度,而且会占用大量额外的内存,这显示是不合理的。并且Excel文件是一种明文的形式存在,基于游戏私密性保护的考虑,也不应该直接使用Excel文件。所以,我们需要一个工具从策划配置的Excel原始文件中数据提取,形成我们自定义的紧凑的数据格式。我们俗称这个过程叫做打表。
GameBox已经集成了对Excel打表的支持,我们只需在GameBox的插件面板,勾选相应的插件和依赖库,点击Update按钮更新即可。
如下图:
更新完后,会在GameBox的菜单出现一个名为"ExcelPacker"的子菜单,点击后会出现Excel打表工具的操作面板。
如下图:
在我们开始在我们的游戏中使用Excel之前,我先简单介绍一个这个打表工具。
由于不同的项目,选择的技术路线一般也不尽相同。为了让这个工具能够适应不同的项目,它已被设计成,能够生成多种不同的数据格式,并可以被多种计算机语言来加载和使用。目前支持的格式有:
1.ProtoBuf格式
这种格式是使用google的protobuf,对表格数据进行序列号。涉及到三种文件的生成.
1) proto文件,该文件是根据Excel的表名,表单名,表头名来生成proto格式的数据描述文件
2) Bytes文件,该文件是根据上面生产的proto数据描述文件和表格种的数据,使用protobuf来序列号后的文件。每个
Excel文件可以包含多个表单。而每个表单会生成一个Bytes文件。
3) C#/Cpp/Python 源码文件。这些代码是用protobuf 生成的,用于反序列号我们生成的表格数据。
当我们是为客户端生成数据时,如果选择的是C#版本的protobuf格式(这也是最常用的方式),那么ExcelPacker还会生成一个名为ExcelManager.cs的C#源码文件。该源码中包含一个名为ExcelManager的类,提供了对所有表格数据进行加载和索取的功能。我们在游戏中使用这些表格数据,都是通过访问这个类来完成。
2.Lua格式
Lua是我们游戏开发中使用最多的脚本语言。当选择这种格式,ExcelPacker会将表格数据之间转化成Lua Table。在代码中需要require相应生成的lua文件即可加载数据。
3.CSV格式
CSV 全称:字符分隔值 。是一种以逗号作为分隔符的纯数据文本文件。如果要使用这种格式,还需要在项目中集成CSV的库,来支持对这种文件进行的读取。

我们可以根据项目的需求,自由选择对应的目标格式来生成和使用。
在选择了合理的生成格式之后,我们需要为游戏设计表格。为了让ExcelPacker能够正确的理解表格中的数据,我们需要按照一个约定的方式来配置表格:
1.