Unity中进程间通信——使用Protobuf-net序列化与反序列化

基于ProtoBuf协议实现网络传输(上)

Protobuf 全称Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。

1. 它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

2. 目前提供了 C++、Java、Python、C#等多种语言的 API。

3. Protobuf是google开源的序列化和反序列化工具,主要是用在网络游戏的消息结构体定义上。它相对于XML文件和Json文件性能更好,效率更高,

4. 在在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码,它的文件格式是以.proto为扩展名的文件。

由于Protobuf不支持.Net3.5及以下版本,所以如果要在Unity3D当中使用,则需要用到第三方的Protobuf-net库。

Protobuf-net也是开源的,项目地址如下:https://github.com/mgravell/protobuf-net

时间: 2024-09-29 10:10:48

Unity中进程间通信——使用Protobuf-net序列化与反序列化的相关文章

【原创】在Unity中关于多态转换与序列化保存的细节

在Unity中关于多态转换与序列化保存的细节 环境: 在unity中为类变量分类. [System.Serializable] public class dllProperty { public int num1 = 1; public string name1 = "dll"; public bool isOn = false; } [System.Serializable] public class myProperty : dllProperty { public int num

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,

c# 通过json.net中的JsonConverter进行自定义序列化与反序列化

相信大家在工作中会经常遇见对json进行序列化与反序列化吧,但通常的序列化与反序列化中的json结构与c#中的类模型结构是相对应的,我们是否可以在序列化一个对象时候,让我们json的数据结构能按照自己的意愿,而不必与该对象的数据结构一样呢?,比如说,一个对象,只有一个名为"ID"的int类型的属性,值为1,如果序列化该对象,则能得到json:{"ID":1},但我现在希望得到的json的"ID"值是bool类型:{"ID":t

[Go] 使用protobuf进行序列化和反序列化

先定义消息类型 orders.proto syntax = "proto2"; package message; message Orders { required int32 order_id=1; required string title=2; } 在GOPATH创建目录和编译这个消息类型输出到该目录,包名是message mkdir $GOPATH/src/message;protoc --go_out $GOPATH/src/message orders.proto 编写go

java中序列化与反序列化的冷知识

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 关于什么是序列化,和为什么要序列化的知识就不再阐述了,本文主要探讨一些特殊点的情况. 1.java中如何实现序列化和反序列化 下面的代码是进行序列化的简单实例 public static void main(String[] args) { System.out.println("-----------------序列化----------------------↓"); Student stu

Java序列化、反序列化

序列化是干什么的 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化. 什么情况下需要序列化 当你想把的内存中的对象状态保存到一个文件中或者数据库中时候: 当你想用套接字在网络上传送对象的时候: 当你想通过RMI传输对象的时候: 序列化的几种方式 在Java中socket传输数据时,数据类型往往比较难

Java IO详解(六)------序列化与反序列化(对象流)

File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocean/p/6854098.html Java IO 字节输入输出流:http://www.cnblogs.com/ysocean/p/6854541.html Java IO 字符输入输出流:https://i.cnblogs.com/EditPosts.aspx?postid=6859242 Jav

Php的序列化与反序列化

1.序列化的概念 序列化是指将复杂的数据类型压缩成一个字符串,反序列化则是将被序列化的数据还原成之前的数据. PHP中序列化与反序列化的函数分别是:serialize(value), unserialize(str) 如: <?php //php的序列化与反序列化 //serialize(value) //unserialize(str) $arr = array( 'name'=>'xiaoming', 'sex'=>'男', 'age'=>20 ); $str = serial

Jedis和JAVA对象的序列化和反序列化的使用

1. Jedis版本: jedis-2.6.2.jar 背景:现在系统提供portal接口服务,使用JDBC直接查询数据库,使用jedis提供的缓存功能,在JDBC前面加上Redis,先从Redis中查询数据,如果Redis中没有该数据,就从数据库中查询,再把查询到的结果放入Redis中,下次再请求该接口的时候,就直接返回Redis中的数据. 2. 序列化和反序列化的使用 接口查询到的数据是一个List集合,把集合对象通过序列化为字符串,放入到Redis中.使用的时候取出Redis中的数据,通过