很早之前我已经讲了如何生成表格解析代码点这里,本次讲一下如何将表格数据生成二进制流。
一、添加FlatBuffers插件
如果我们要使用FlatBuffers技术,那么必须向工程中添加FlatBuffers插件,步骤很简单,我们新建一个Unity3D的空工程,然后在Asset目录下新建Plugins文件夹,并且将之前生成的FlatBuffers.dll文件放到此目录下即可。
二、设计数据表格
我们做开发游戏项目时,经常要为策划设计表格,然后由策划来填写表格内容,程序来解析表格数据 用于业务逻辑。那么我们也从设计一个表格开始,比如我们设计一个怪物表Monster.txt,此文件为普通的文本文件,编码为UTF-8格式,内容如下:
#Id Name Desc Level HP Attack Depense
#INT STRING STRING INT INT INT INT
#怪物ID 怪物名称 描述 等级 血量 攻击力 防御力
1 大地之熊 大地之熊 1 100 2 0
2 烈焰土熊 烈焰土熊 2 180 5 1
3 噬魂蚁王 噬魂蚁王 3 200 8 2
4 玄冰毒蚁 玄冰毒蚁 4 250 12 3
5 九尾天狐 九尾天狐 5 300 18 3
6 幽冥火狐 幽冥火狐 6 380 20 5
7 不死雪狐 不死雪狐 7 420 25 6
8 极地冰狐 极地冰狐 8 480 28 8
9 八翼雷鹰王 八翼雷鹰王 9 600 30 10
这个表每一行的数据之间都以制表符"Tab"相隔,第一行为表的列名,第二行为每一列的数据类型,第三行为对每一列的释义,从第四行开始就是怪物表的属性值了,那么我们就从这样一张表开始讲解如何将此表数据转化为FlatBuffers格式的二进制流文件.
三、制作fbs文件
根据上面Monster的表结构,我们可以制作如下的fbs文件,也可以自己写代码来生成fbs文件,生成后的Table_Monster.fbs文件内容如下:
namespace FlatBuffersDemo;
table Table_Monster {
data:[Monster];
}
table Monster {
Id:int;
Name:string;
Desc:string;
Level:int;
HP:int;
Attack:int;
Depense:int;
}
root_type Table_Monster;
四、生成解析表数据的代码文件
按照上一节中讲的步骤使用flatc.exe工具来生成解析代码文件Table_Monster.cs,使用如下的命令:
flatc.exe --csharp --gen-onefile Table_Monster.fbs
使用上述指令后,会生成如下的代码:
// <au