【protobuf】 2.在Unity中引用ProtoBuf
2015-07-01 11:17
639 查看
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文件了。
三、将生成的cs代码导入到Unity项目中
通过步骤二,就可以得到Addressbook.cs了,导入到Unity项目中。
四、导入DLL或者源码
导入Google.ProtocolBuffers.dll或者ProtocolBuffers源码到Unity项目中。
源码的路径通常为 D:\protobuf-3.0.0-alpha-3\csharp\src\ProtocolBuffers,因人而异,只需导入.cs文件。
通过这两种方式生成的apk文件大小做对比,给大家参考。个人倾向于导入源码,出现bug的时候,就可以进行断点调试了。
五、测试代码
一、如何获得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()); } }输出
相关文章推荐
- Unity框架(代码结构)总结
- 【Unity】技巧集合2
- unity 线程下载图片
- Measuring Performance with the Built-in Profiler[Unity]
- unity, iterate immediate children and iterate all children
- Unity 粒子系统
- Unity 着色器
- Leap Motion Using Unity3D——环岛跑车篇
- Unity 设置指定的版本目录下所有文件的AssetName
- 《Unity3D/2D游戏开发从0到1》正式出版发行啦
- 关于高通AR vuforia 4.2.3在UNITY5.0中发布到安卓白屏的问题
- [unity3d]easytouch的使用
- Unity自定义菜单栏
- unity 脚本的挂载 与按钮事件
- 关于 UNITY3D接入 SHARE SDK 安卓微信部分(不跳审核)的注意点!
- <Unity3D>实例化UGUI中GameObject 并设置它的位置
- unity Toggle Groud
- Netty游戏服务器之五Unity3d登陆消息
- Netty游戏服务器之五Unity3d登陆消息
- Unity3d《Shader篇》自定义光照模型