谷歌Google-protobuf源码地址。 首先我们看一下官方给出的介绍:
protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。 你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。
从Google-protobuf可以下载到protobuf代码,但后续的使用还需要我们自己去定义。 这个是我自己的测试项目。 用protobuf需要自己定义一个PB类,然后在方法中调用解析与加载的函数,进行数据的封装,可以存入文本中protobuf相比交于XML更小更快,但所显示效果并没有XML直接。
using UnityEngine;
using System.IO;
using ProtoBuf;
[ProtoContract]
public class PBN_Quaterion
{
[ProtoMember(1)]
public float x { get; set; }
[ProtoMember(2)]
public float y { get; set; }
[ProtoMember(3)]
public float z { get; set; }
[ProtoMember(4)]
public float w { get; set; }
public PBN_Quaterion()
{
}
public PBN_Quaterion(Quaternion q)
{
this.x = q.x;
this.y = q.y;
this.z = q.z;
this.w = q.w;
}
public Quaternion toQuat()
{
return new Quaternion(x, y, z, w);
}
public static PBN_Quaterion FromQuat(Quaternion q)
{
return new PBN_Quaterion(q);
}
}
public class PBNTest : MonoBehaviour
{
public Transform target;
public Transform targes;
public string path;
public void saveRot()
{
using (Stream file = File.Create(path))
{
Serializer.Serialize(file, PBN_Quaterion.FromQuat(target.localRotation));
file.Close();
}
}
public void loadRot()
{
using (Stream file = File.OpenRead(path))
{
PBN_Quaterion q = Serializer.Deserialize<PBN_Quaterion>(file);
file.Close();
targes.localRotation = q.toQuat();
}
}
}
这个是进行存储之后在txt中显示的数据,protobuf所显示的数据是无法通过txt直接看到的,需要通过代码的解析才能显示。
臛 ???钌?砍?
|