【protobuf】 2.在Unity中引用ProtoBuf
C#的ProtoBuf有两个版本:protobuf-net和protobuf-csharp-port,后者已经合并到这里。本文使用的是protobuf-csharp-port,以便项目以后更好地支持protobuf3.0。
一、如何获得ProtoGen.exe
有3种方法可获得ProtoBuf的csharp代码生成工具ProtoGen,个人推荐从GitHub下载源码进行编译
1.获得源码进行编译。因为GitHub的google/protobuf的源码里,没有ProtoGen,所以暂时用另一个旧的开源项目的源码 jskeet/protobuf
2.通过NuGet获得。新建一个.NET Framework4的C#项目。工具→NuGet程序包管理器→管理解决方案的NuGet程序包→搜索Google.ProtocolBuffers安装→安装完后打开程序包管理控制台→输入Install-Package Google.ProtocolBuffers→打开项目目录找到packages\Google.ProtocolBuffers.2.4.1.555\tools。
3.如果可以翻墙上google的话,可以从google code上下载,https://code.google.com/p/protobuf-csharp-port/downloads/list
二、生成ProtoBuf代码
通过上面的步骤得到4个文件ProtoGen.exe、protoc.exe、Google.ProtocolBuffers.dll、ProtoGen.exe.config,可以拷贝出去用,或者在原地用。在此目录里,新建一个bat文件,用于生成我们的目标cs代码。其中,把addressbook.proto改一改,就可以用于其他的proto文件了。
protoc.exe --descriptor_set_out=ProtoBinTemp.protobin --include_imports addressbook.proto
protogen.exe ProtoBinTemp.protobin
del ProtoBinTemp.protobin
pause
三、将生成的cs代码导入到Unity项目中
通过步骤二,就可以得到Addressbook.cs了,导入到Unity项目中。
四、导入DLL或者源码
导入Google.ProtocolBuffers.dll或者ProtocolBuffers源码到Unity项目中。
源码的路径通常为 D:\protobuf-3.0.0-alpha-3\csharp\src\ProtocolBuffers,因人而异,只需导入.cs文件。
通过这两种方式生成的apk文件大小做对比,给大家参考。个人倾向于导入源码,出现bug的时候,就可以进行断点调试了。
五、测试代码
using UnityEngine;
using tutorial;
public class ProtoBufTest : MonoBehaviour {
void Start()
{
AddressBook.Builder addressBookBuilder = AddressBook.CreateBuilder();
Person.Builder person = Person.CreateBuilder();
person.Id = 1;
person.Name = "Test";
person.Email = "test@qq.com";
addressBookBuilder.AddPerson(person);
AddressBook addressBook = addressBookBuilder.Build();
Debug.Log(addressBook.ToString());
}
}
输出
更多推荐
所有评论(0)