1.下载 Protobuf-net 点击打开链接
2.用VS打开Protobuf-net 解决方案,编译CodeGen 项目
3.在protobuf-net-master\ProtoGen\bin\Debug 目录中编写一个测试Order.proto 文本文件,.proto 语法请自行查找资料
package ServerMessage;
message Order
{
required int32 time = 1;
required int32 userid = 2;
required float price = 3;
optional string desc = 4;
}
4.打开命令行,进入 protobuf-net-master\ProtoGen\bin\Debug 这个目录
5.运行如下命令
protogen -i:Order.proto -o:Order.cs
-i 是输入文件,可以有多个
-o 输出的cs文件, 只能有一个..如果-i有多个 会将所有的代码生成到这一个cs文件当中
-ns 命名空间 最好使用,如果不使用每次生成的默认命名空间是proto的文件名。
6.在所下载的Protobuf-net 目录中 找到 protobuf-net 文件夹, 把整个文件夹放在Unity assets文件夹下,这时候会报错,先不用管7.assets 下新建一个文件夹Msg, 把Order.cs 放在里面
8.在asserts 目录下新建一个文本文件 写入 -unsafe,前后不要有空格,然后重命名文件smcs.rsp
9.Untiy中添加一个button ,添加一个脚本脚本 ,并引用
using ProtoBuf;
using ServerMessage;
添加一个函数,并和按钮点击事件关联
public void OnClicked()
{
Order od = new Order();
od.desc = "test";
od.price = 100.0f;
od.time = 10000;
od.userid = 205;
MemoryStream stream = new MemoryStream();
Serializer.Serialize(stream, od);
//此结果就可以在网络上传输
byte[] result;
result = stream.ToArray();
//测试反序列化
MemoryStream dstream = new MemoryStream(result);
Order ed= Serializer.Deserialize<Order>(dstream);
Debug.Log("desc:" + ed.desc);
}
10.重启Unity