Protobuf:平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,通常用于网络通讯和数据存储前端
连接:mvn9(或者 https://github.com/protocolbuffers/protobuf/tree/82d3d7d250645322f8a7343188e5ae6246a76414)git
先设置下DLL导出版本,不一样版本的Unity3D可能对应的net版本不一样github
以后就能够开始生成DLL了数组
打开 ProtobufTool_Rect 傻瓜包,在里面新建.proto文件以下(随便起名就好):网络
编辑一下proto文件,在里面输入如下内容数据结构
syntax = "proto3"; //proto语法版本 package jaihk662; //包名 message TestForProto //一个message至关于一个类 { string name = 1; //后面的 = 1是参数标签,必须有 int32 age = 2; repeated int32 pos = 3; //repeated能够理解为List,等价于List<int> pos; }
以后你懂得,点击 buildC#.bat 就能够一键生成了,生成的.cs能够在 C#protocs 文件夹中找到测试
若是生成失败,说明你有语法错误,检查一下.proto内有没有打错字母等......ui
将你第二步生成的.cs文件和第一步生成的.dll文件所有放入你的项目里(放入Assest,建议新建一个文件夹进行管理)spa
到这一步其实你就已经会用Protobuf了,恭喜!(固然只针对前端)3d
接下来测试一下,随便新建一个脚本,输入如下代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using Jaihk662; //引用.cs文件中的命名空间(.proto文件中的package值) using Google.Protobuf; //引用DLL public class AASD : MonoBehaviour { void Start() { TestForProto toServer = new TestForProto(); toServer.Name = "Jaihk662"; toServer.Age = 22; for (int i = 5; i <= 7; i++) toServer.Pos.Add(i); //将对象转换成字节数组 byte[] databytes = toServer.ToByteArray(); //将字节数据的数据还原到对象中 IMessage IMperson = new TestForProto(); TestForProto toClient = new TestForProto(); toClient = (TestForProto)IMperson.Descriptor.Parser.ParseFrom(databytes); Debug.Log(toClient.Name); Debug.Log(toClient.Age); for (int i = 0; i < toClient.Pos.Count; i++) Debug.Log(toClient.Pos[i]); } void Update() { } }
搞定!