概述
一、 数据转换
1.1. ProtoBuffer
proto: n. 原型;样机;典型
buffer : n. [计] 缓冲区;缓冲器,[车辆] 减震器
1.1.1. 简介
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。PB 是 跨平台的;
数据 存储 :
JSON , XML ,DB ,TXT , Playerperf
Excel - txt .已经逐渐被替代
Protobuffer : 简称pb,这是一个 高效 存储格式。可以将Class直接转换为二进制流,且压缩率非常的高。以下是对比的测试:
https://www.oschina.net/translate/choose-protocol-buffers 对比
http://www.cnblogs.com/shrimps/archive/2008/11/06/1327988.html
json与ProtoBuffer对比:http://cxshun.iteye.com/blog/1974498
test.proto 只有一个 。
格式:
http://www.cnblogs.com/stephen-liu74/archive/2013/01/02/2841485.html
1.2. 使用
一般都是服务器 程序定义的,服务器端提供。
用 不同平台 生成 不同的 对应class :
Protogen 地址 : 需要自己编译,编译出来exe文件。即可使用
https://github.com/mgravell/protobuf-net/tree/master/src/protogen
1.2.1. Protogen.exe 生成解析文件
1,建立一个 bat
2, .bat 中 输入
protogen -i:test.proto -o:testTwo.cs
protogen -i:Test1.proto -i:Test2.proto -i:Test3.proto -o:Output.cs -ns:com.fbmly.model
-i 是输入文件,可以有多个
-o 输出的cs文件, 只能有一个..如果-i有多个 会将所有的代码生成到这一个cs文件当中
-ns 命名空间 最好使用,如果不使用每次生成的默认命名空间是proto的文件名。
Protobuffer .cs
1.2.2. 在工程中使用解析文件
1. 将 protobuffer-net 拖入工程;一下时下载地址:
https://github.com/mgravell/protobuf-net/tree/master/src
2. 将 smcs 拖入工程
smcs.rsp =>–unsafe
3. 重启 Unity3d
4. 修改api兼容标准:
- 将生成的 protobbuffer.cs 托入工程 。
1.2.3. 代码实现
首先引入命名空间,即在生产解析文件时定义的名称空间
//convert the class into an byte array
public static byte[] Serialize(IExtensible msg)
{
byte[] result;
using (var stream = new MemoryStream())
{
Serializer.Serialize(stream, msg);
result = stream.ToArray();
}
return result;
}
//convert an byte array into class
public static IExtensible Deserialize<IExtensible>(byte[] message)
{
IExtensible result;
using (var stream = new MemoryStream(message))
{
result = Serializer.Deserialize<IExtensible>(stream);
}
return result;
}
通过调用以上两种方法,来实现字节流与类之间的转换
最后
以上就是务实绿茶为你收集整理的unity中ProtoBuffer的使用的全部内容,希望文章能够帮你解决unity中ProtoBuffer的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复