【protobuf】 2.在Unity中引用ProtoBuf

12 篇文章 0 订阅
5 篇文章 0 订阅

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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值