protobuf-net的序列化与反序列化(本地存储)

继续昨天:

配置好protobuf-net以后我开始尝试自定义一个数据 用pb实现序列化并且写入到文件中作为配置项。

尝试成功后各位程序组的老大竟然说:非大型项目用pb兼职就是徒增难度!!!!!!!!真是打击人啊。不管怎么样

我可是目标要成为独立制作人的。多学总没坏处,上个代码先:

using UnityEngine;
using System.IO;
using character;
using ProtoBuf;
public  class ProtobufSerialize:MonoBehaviour
{

    RoleInfo info;
    string filepatch;


    void Start()
    {
        filepatch = Application.dataPath + "proto.bin";
    }
    void setinfo()
    {
        info = new RoleInfo();
        info.name = "小宝贝";
        info.age = 25;
        info.sex = RoleInfo.Sex.man;
    }
    public void PBSerialize(T t)
    {
        FileStream stream = new FileStream(filepatch, FileMode.Create);
        MemoryStream sm = new MemoryStream();
        Serializer.Serialize(stream, t);
        stream.Close();
     
    }



    public  void PBDeSerialize()
    {
        FileStream stream = new FileStream(filepatch, FileMode.Open);
        if (stream == null)
        {
            Debug.Log("stream is null");
            return;
        }
        RoleInfo pbinfo = Serializer.Deserialize(stream);
        Debug.Log(pbinfo.name+pbinfo.age+pbinfo.sex+"完成");
        stream.Close();

    }


    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 80, 30),"创建对象"))

        {
            setinfo();
        }
        if (GUI.Button(new Rect(30, 50, 80, 30), "序列对象")) 

        {
            PBSerialize(info);
        }
        if (GUI.Button(new Rect(30, 80, 80, 30), "反序列对象")) 

        {
            PBDeSerialize();
        }
    }
}
其中RoleInfo这个对象是用pb工具自动生成的 并且在点击创建按钮的时候生成一个新对象并且填充数据。

然后使用序列化按钮保存对象到本地文件中。最后可以点击反序列化按钮对文件进行解析并且打印数据。

protobuf-net的序列化与反序列化(本地存储)_第1张图片

protobuf-net的序列化与反序列化(本地存储)_第2张图片

你可能感兴趣的:(unity,移动游戏)