unity如何使用protobuf-net进行数据序列化

上一篇文章讲了: 使用protogen工具将proto文件生成cs文件


本篇接着上一篇,讲一下protobuf具体在unity中如何用


新建一个Unity工程


这里写图片描述



这里写图片描述



通过上面的两步,在unity中使用protobuf做开发的环境已经搭建完成,下面就可以来测试一番,是不是很简单,本来事确实很简单


为了开发的方便,这里写了一个protobuf的工具类(ProtobufHelper.cs)



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtoBuf;
using System.IO;

namespace ProtobufObj
{
    class ProtobufHelper
    {
        //将对象序列化为字符串  
        public static string SerializerToString<T>(T t)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                Serializer.Serialize(ms, t);
                return ASCIIEncoding.UTF8.GetString(ms.ToArray());
            }
        }

        //将对象序列化到文件  
        public static void SerializerToFile<T>(T t, string filePath)
        {
            using (var file = File.Create(filePath))
            {
                Serializer.Serialize(file, t);
            }
        }


        //将字符串转化为对象  
        public static T DederializerFromString<T>(string str)
        {
            //using作为语句,用于定义一个范围,在此范围的末尾将释放对象  
            //将字符串转化为内存流  
            using (MemoryStream ms = new MemoryStream(ASCIIEncoding.UTF8.GetBytes(str)))
            {
                T obj = Serializer.Deserialize<T>(ms);
                return obj;
            }
        }

        //将文件数据转化为对象  
        public static T DederializerFromFile<T>(string filePath)
        {
            using (var file = File.OpenRead(filePath))
            {
                T obj = Serializer.Deserialize<T>(file);
                return obj;
            }
        }
    }
}


工具类已经写好了,下面就来真正测试一番,写一个test.cs,并将此脚本,挂到unity场景中物体上


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MY;
using ProtoBuf;
using ProtobufObj;
public class test : MonoBehaviour {

    // Use this for initialization
    void Start () {
        daiping kk = new daiping ();
        kk.age = 35;
        //序列化  
        string str = ProtobufHelper.SerializerToString<daiping>(kk);
        //反序列化  
        daiping obj = ProtobufHelper.DederializerFromString<daiping>(str);
        print(obj.age);

    }

}


这里写图片描述




运行unity打印结果如下:

这里写图片描述


FR:海涛高软(hunk Xu) QQ技术交流群:386476712

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值