主要参考 知乎上皮皮关专栏
今天主角是来自谷歌的——Protocol Buffer,简称protobuf。英文直译过来就是协议缓冲区。是一种独立于语言,独立于平台的数据交换格式。
protobuf有自己专用的描述文件(.proto),有自己的编译器protoc与对多种编程语言提供的API。
主要作用在于为数据储存、网络通信等提供一种基于二进制的格式,是一种高效率的序列化工具。
想必熟悉编程的小伙伴们一定对序列化有所认识,特别是Json,XML这一类比较常用的数据交换格式。
快速入门
项目示例,使用3.7.1版本,后续版本引入 system.memory,Unity 使用的是 .net framework,并没有 system.memory,而 .net core 中有,还未尝试自行引入行不行。
下载对应版本对应语言的项目代码。
编译后得到对应的 .dll文件 并导入 Unity 中,这里的示例不光导入了最原始的 Protoc库 也导入了对应的 Json库。
下载对应的根据.protoc 生成代码工具,并使用批处理命令批量处理。参考自动生成(使用.bat批处理命令),示例中也进行了整合。
1
2
3
4
5
6
7@echo off
for %%i in (*.proto) do (
protoc --csharp_out=../ProtocCS/ %%i
rem 从这里往下都是注释,可忽略
echo From %%i To %%~ni.cs Successfully!
)
pause最后一步,整合到 Unity 项目中。具体可以参照示例。
Protoc 语法
官方文档 需要梯子
Protoc 调用方法
官方文档 需要梯子