前几天,公司前辈要我去学习一下protobuf在unity中的使用,因为序列化的问题在网上找了很多教程终于将问题解决,特此记录一下代码和使用情况。
首先找到protobuf-net,Google.Protobuf两个拓展文件导入到unity中通过using ProtoBuf就可以正常使用了,使用有两个方法。
第一种是使用protoc.exe工具将.proto文件转成.cs文件,然后通过new一个.cs文件就可以使用了。如下:
data d = new data();
d.talkdata = "hello world";
d.length = 5;
byte[] databyte = d.tobytearray();
imessage idata = new data();
data d1 = new data();
d1 = (data)idata.descriptor.parser.parsefrom(databyte);
debug.log(d1.talkdata);
debug.log(d1.length);
第二种是使用序列化和反序列的方式,如下:
/*
* 脚本功能:Protobuf数据打包工具类(手动方法)
* 第一次创建:2019.02.27
* 编程人员:何张强
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ProtoBuf;
[ProtoContract]
public class NetModel {
[Pr