Unity中使用Protobuf

开发环境

  • Windows
  • C#
  • Unity 2017.1.2
  • Visual Studio 2015 | Visual Studio 2017 | Visual Studio 2019
  • .NET 3.5 | .NET 4.6
  • protobuf-3.6.1

protobuf

官网地址 使用介绍

官网教程地址 protobuf tutorial
github地址 protocolbuffers
从gitbub中下载发布版本 版本下载

简单介绍

使用protobuf主要有三方面内容

  • 编写proto文件
  • 使用protoc工具生成代码文件
  • 工程中引入protobuf源码或者库文件

使用

准备工作

从上面github下载地址中下载release的C#版压缩包 protobuf-csharp-3.6.1。还有 protoc-3.6.1-win32.zip 这个压缩包里有 protoc.exe 工具,根据不同平台还可以下载 osx,linux版本。
下载完成后解压后目录如下。
protolbuf目录
目录中的readme有相关内容介绍。重点关注 csharp 和 cmake 目录。
先说 cmake 目录,根据目录中的 reademe 配置好 cmake 环境,最后可以生成一个 vs 的解决方案,使用vs2017打开解决方案后,可以生成proto相关的几个工具,其中就有 protoc.exe。当然如果没有修改proto源码的需求的话,可以不关注cmake目录,直接使用上面下载的 protoc.exe即可。

导入代码

在工程中使用proto的话,有两种方式,一种是引入proto代码,另外一种是引入proto代码生成的dll。针对Unity开发使用的C#版本,还要考虑 .Net 版本问题。Unity现在大部分使用的 .Net 3.5,而C#版protobuf目前官方是不支持 .Net 3.5了。不过想在 .Net 3.5 使用 protobuf 3.x 版本的话也是可以的,生成 dll 部分会讲到。

引入proto代码

可以直接将 charp/src/ 目录下的 Google.Protobuf 目录下的代码拷贝到工程中即可。不过在Unity使用这种方式的话,需要将程序集改成 .Net 4.6。p.s.修改Unity使用程序集版本路径,在Unity Editor 中 Player Settings -> Other Settings 中修改。

引入 dll

如果要引入 dll 的话,需要将上面引入的proto代码生成 dll。这个时候需要 vs2017,使用低版本的vs2012是不可以的。使用vs2017还需要安装 .Net Core,在vs2017安装工具中可以选装。在 csharp/src 下有个解决方案,使用 vs2017 打开即可。
如果使用vs2019打开解决方案时,工程总是加载失败,如果有输出如下错误,那就是因为vs2019使用的dotnet core sdk版本过高和proto工程里使用的sdk版本不一致导致的。可以在命令行里通过dotnet --version 查看当前系统使用的dotnet core sdk版本,然后修改 proto 工程根目录的 global.json 文件中 sdk 版本号来解决。

dotnet --version

Detailed Information: Unable to locate the .NET Core SDK. Check that it is installed and that the version specified in global.json (if any) matches the installed version.
在这里插入图片描述
右键选中 Google.Protobuf 执行生成,即可生成 Google.Protobuf.dll 文件。生成的 dll 文件位于 bin/Debug 目录下。默认是生成 .Net 4.5的 dll,放在 net45 目录下。生成 .Net 3.5的 dll 的话可以修改工程配置文件。
生成 .Net 3.5 版 dll
修改Google.Protobuf工程文件。src/Google.Protobuf/Google.Protobuf.csproj。使用文本编辑器打开Google.Protobuf.csproj文件后,找到里面的关键字 TargetFrameworks ,将关键字后面的 net45 改成 net35即可,然后同上面的右键执行生成操作,就可以生成 .Net 3.5版的 dll。
将 dll 文件拷贝到 Unity 工程中的 Plugins 目录下即可。

生成 protoc.exe

可以通过 cmake 工具生成 protobuf visual studio 工程,然后通过visual studio 工程生成 protoc.exe。
如何在我们下载的proto源码工程中使用 cmake 工具,可以参考工程目录中 cmake目录中的 README.md。
这里我是使用生成解决方案的方式。

1.安装 cmake 工具

可以从官网下载已经编译好的版本。如果下载cmake源码的话,还得自己编译,比较麻烦。
https://cmake.org/download/
下载一个编译好的 exe 直接安装即可,可以选择 c 盘根目录,然后安装时选择设置到 path。

2.使用 cmake 生成 visual studio 2015 解决方案

1.在下载好的 proto 源码工程中 cmake 目录内创建 build 目录,然后在 build 目录执行 cmake 命令。

cmake ..

如果运气好就可以成功生成 protobuf.sln 解决方案,并且带有很多很多vs工程文件。我的运气就不好,遇到了两个错误

No CMAKE_C_COMPILER could be found
No CMAKE_CXX_COMPILER could be found.

后来参考这篇文章,发现是 visual studio 2015 安装时默认少装了vc++,windows sdk 相关组件。可以通过vs2015加装这两个组件,快捷方式就可以按参考文章所写的,新创建工程,然后选择 Visual C++ 工程,再把缺失的双击下载。
参考文章:https://blog.csdn.net/u013832707/article/details/53127710

3.build protoc.exe

使用 vs2015 打开 protobuf.sln 解决方案,然后选择 protoc 工程,右键选择 build。成功生成后就可以在 Debug 目录找到 protoc.exe。
protobuf 解决方案

简单使用

通过上面准备工作后,可以正式开始使用protobuf了。从github下载的包中自带的工程中有一个官方写的 AddressBook 例子。可以使用vs2017打开查看。里面有编写好的一个proto文件。
可以新建一个unity工程,然后使用 AddressBook 中自带的 proto文件,也可以自己编写一个,编写完后,在命令行状态下使用 protoc.exe 生成 c# 代码文件。命令格式

 protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto

把生成的 Addressbook.cs 代码文件拷贝到 unity 工程中即可使用。

通过上面两种方式,写了两个unity使用protobuf的小demo。
unity中使用proto源码的小demo
unity中使用dll的小demo

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值