转自:https://blog.csdn.net/weixin_43298513/article/details/135462197
本文使用的Protobuf版本为 3.20.3
1.下载Protobuf
2.使用protoc.exe将proto文件生成对应语言的代码
下载好之后解压,并在刚才解压的文件夹里找到bin文件夹
新建proto文件
syntax="proto3";//指定了正在使用proto3语法,如果没指定编译器默认使用proto2语法
package TestGoogleProtoBuff;//等于C#中命名空间
message personInfo
{
string name=1;
int32 age=2;
int64 money=3;
message PhoneNumber{
string number=1;
PhoneType type=2;
}
repeated PhoneNumber phone=5;
}
enum PhoneType{
HOME=0;
WORK=1;
MOBILE=2;
}
然后在这个文件夹中创建ExProtProto.bat,输入一下命令并保存
双击ExProtProto.bat,我们发现生成了Person.cs文件
3.在Unity3d中的使用
打开unity,新建文件夹Proto,将刚刚生成好的Person.cs代码放在Proto文件夹中。
此时unity控制台会大量飘红!这时因为缺少了Person.cs的引用所导致的。
用vs打开Person.cs,点击最上面菜单栏 工具>NuGet 包管理器>管理解决方案的NuGet 管理包
版本一定要选择咱们一开始下载的对应版本否则不兼容!
这里选择3.20.3。然后点击安装,稍等安装好之后我们打开unity项目根目录
分别把
.\Packages\Google.Protobuf.3.20.3\lib\netstandard2.0\Google.Protobuf.dll
.\Packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll
.\Packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll
.\Packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
这几个dll文件放在Assets/Plugins文件夹中,等待unity重新编译,然后清空控制台错误消除。
注意:这里选择netstandard2.0中的dll文件是因为unity2019.4.x中 api版本对应的时.NET Standard 2.0,不同版本的unity要找不同的net版本对应,否则会有冲突,一般更高版本的unityapi版本为netstandard2.1
至此便可以在Unity中使用protobuf了。