手把手教你使用Google.Protobuf3三 序列化与反序列化
1.Untiy工程创建
首先创建一个UnityDemo,Unity版本最好在2018以上。
创建完成之后把项目.net框架切换为4.x
如下:

2.导入Google.Protobuf.dll
1.创建Plugins/Google.Protobuf.3.17.0文件夹,文件夹后面跟上Google.Protobuf的版本号,避免日后遗忘。
2.把第一章下载好的Google.Protobuf相关的Dll导入Unity Asset/Plugins/Google.Protobuf.3.17.0文件夹中
如下:

导入完成之后,我们就可以使用Protobuf了。
3.导入proto协议文件
1.把 手把手教你使用Google.Protobuf3(二) .proto数据文件转.cs脚本 编译出来的.cs协议类导入到Untiy中。
放到Scripts/Protocal文件夹下,等待我们后面使用
如下:

4.编写序列化与反序列化工具类
编写序列化工具类有两种方式:
第一种是在类库中进行编写,做成dll进行使用。
第二种是在Unity中创建脚本进行编写。
注意:以上两种方式任选其一使用即可。
1.序列化与反序列化源码
序列化与反序列化代码:
/// <summary>
/// 序列化
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public static byte[] Serialize(IMessage message)
{
return message.ToByteArray();
}
/// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="packct"></param>
/// <returns></returns>
public static T DeSerialize<T>(byte[] packct) where T : IMessage, new()
{
IMessage message = new T();
try
{
return (T)message.Descriptor.Parser.ParseFrom(packct);
}
catch (System.Exception e)
{
throw e;
}
}
2. 编写序列化类库 导入Unity
找到我们第一节创建的类库,然后拷贝代码,using Google.Protobuf ,右键生成即可。
生成完毕后,导入Untiy。
.

2.在Unity中编写序列化脚本进行使用
创建Protobuffer.cs脚本,粘贴序列化代码,保存即可。
如下:

5.编写协议正反序列化测试代码
在Scripts文件夹下创建ProtobufTest脚本,把下面代码粘贴上去,保存。
然后把该脚本拖拽到 Main Camera 上。
正反序列化测试代码:
void Start()
{
//类序列化为二进制
userInfo userInfo = new userInfo();
userInfo.Name = "ZM壹叶成名";
userInfo.Gold = 8888888;
userInfo.Diamonds = 666666;
userInfo.Level = 999;
byte[] data = Protobuffer.Serialize(userInfo);
Debug.Log("data.length:" + data.Length);
//二级制序列化为类
userInfo info = Protobuffer.DeSerialize<userInfo>(data);
Debug.Log(info.Name);
Debug.Log(info.Gold);
Debug.Log(info.Diamonds);
Debug.Log(info.Level);
}


6.序列化与反序列化验证
代码编写完毕之后,启动Unity进行测试

好了,Untiy如何使用Google.Protobuf3相信大家也已经学会了。
回顾以下,我们的 Google.Protobuf3.dll 获取 和 proto协议序列化和反序列化 都用两种方式。
使用方式还是非常灵活的,具体使用那种,我这里只能做个引导,具体还是要看大家的喜好来决定。
售后学习交流群:728685392 (领取优惠券和红包)
觉得本篇文章可以的话,记得动动小手点下关注哦,更多干货知识你来拿!
本文手把手教你如何在Unity2018以上版本中使用UnityGoogle.Protobuf3进行序列化和反序列化操作。首先创建Unity工程并切换.NET框架至4.x,接着导入Google.Protobuf.dll。然后导入.proto协议文件编译出的.cs类,并编写序列化与反序列化工具类。最后,通过测试代码验证序列化与反序列化的正确性。提供两种编写工具类的方式,并鼓励读者根据喜好选择。
1851

被折叠的 条评论
为什么被折叠?



