Unity 使用 Protobuf-net

来源:互联网 发布:掌上电力老是网络错误 编辑:程序博客网 时间:2024/06/06 08:40

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







1 0
原创粉丝点击