如何在unity中通过Socket使用unity protobuf ios

unity中实现Socket通讯的问题
[问题点数:30分,结帖人qh1993430]
unity中实现Socket通讯的问题
[问题点数:30分,结帖人qh1993430]
只显示楼主
取消只显示楼主
匿名用户不能发表回复!|没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Unity技术博客 - 基于ProtoBuf协议实现网络传输(上) - 简书
Unity技术博客 - 基于ProtoBuf协议实现网络传输(上)
Unity版本: 5.3
使用语言:
ProtoBuf是Google公司推出的一种二进制序列化工具,适用于数据的网络传输。
基于Socket实现时时通信,关于数据粘包的编码和解码处理是必不可少的。
实现功能:
1.基于ProtoBuf序列化对象
2.使用Socket实现时时通信
3.数据包的编码和解码
1.Unity中使用ProtoBuf
导入到Unity中
创建网络传输的模型类
using ProtoB
//添加特性,表示可以被ProtoBuf工具序列化
[ProtoContract]
public class NetModel {
//添加特性,表示该字段可以被序列化,1可以理解为下标
[ProtoMember(1)]
public int ID;
[ProtoMember(2)]
public string C
[ProtoMember(3)]
public string M
在Unity中添加测试脚本,介绍ProtoBuf工具的使用。中间用到了这个概念,对于此概念不熟悉的同学先去我的简书学习。
using System.IO;
public class Test : MonoBehaviour {
void Start () {
//创建对象
NetModel item = new NetModel(){ID = 1, Commit = "LanOu", Message = "Unity"};
//序列化对象
byte[] temp = Serialize(item);
//ProtoBuf的优势一:小
Debug.Log(temp.Length);
//反序列化为对象
NetModel result = DeSerialize(temp);
Debug.Log(result.Message);
/// &summary&
/// 将消息序列化为二进制的方法
/// &/summary&
/// &param name="model"&要序列化的对象&/param&
private byte[] Serialize(NetModel model)
//涉及格式转换,需要用到流,将二进制序列化到流中
using (MemoryStream ms = new MemoryStream()) {
//使用ProtoBuf工具的序列化方法
ProtoBuf.Serializer.Serialize&NetModel& (ms, model);
//定义二级制数组,保存序列化后的结果
byte[] result = new byte[ms.Length];
//将流的位置设为0,起始点
ms.Position = 0;
//将流中的内容读取到二进制数组中
ms.Read (result, 0, result.Length);
} catch (Exception ex) {
Debug.Log ("序列化失败: " + ex.ToString());
/// &summary&
/// 将收到的消息反序列化成对象
/// &/summary&
/// &returns&The serialize.&/returns&
/// &param name="msg"&收到的消息.&/param&
private NetModel DeSerialize(byte[] msg)
using (MemoryStream ms = new MemoryStream()) {
//将消息写入流中
ms.Write (msg, 0, msg.Length);
//将流的位置归0
ms.Position = 0;
//使用工具反序列化对象
NetModel result = ProtoBuf.Serializer.Deserialize&NetModel& (ms);
} catch (Exception ex) {
Debug.Log("反序列化失败: " + ex.ToString());
#成功的道路没有捷径,代码这条路更是如此,唯有敲才是王道。
前言 众所周知,网络游戏中,服务器的搭建尤为重要,无论是授权服务器,还是非授权服务器,它都承担着很大一部分的数据处理。今天,给大家分享一个中高级的小服务器搭建,当然也是在Unity上实现的,可以迁移为服务,外部程序等。其中加入了对象的序列化与反序列化,数据包的封包与拆包,细...
RPC框架远程调用的实现方式在原理上是比较简单的,即将调用的方法(接口名、方法名、参数类型、参数)序列化之后发送到远端,在远端反序列化之后调用接口的实现类的方法(接口主要是为了使用动态代理)。所以我们在实现RPC框架的时候需要选择合适的序列化与反序列化方式 常见的序列化与反...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
Unity版本: 5.3 使用语言:
C# 写在前面 ProtoBuf是Google公司推出的一种二进制序列化工具,适用于数据的网络传输。基于Socket实现时时通信,关于数据粘包的编码和解码处理是必不可少的。 实现功能: 3.数据包的编码和解码 首先,举个例子,这个月信...
Unity版本: 5.3 使用语言:
C# 写在前面 ProtoBuf是Google公司推出的一种二进制序列化工具,适用于数据的网络传输。基于Socket实现时时通信,关于数据粘包的编码和解码处理是必不可少的。 实现功能: 2.Unity中使用Socket实现时时通信 通...
一 若论这几年来最流行的汉字,怼字当可竞选。 从字源上来看,怼字上对下心,貌似是一个人以一个对的姿态对另一个的心展开攻势和讨伐,而且颇有点居高临下,占据高点之意。 怼之风靡,大有黄河之水天上来,奔流到海不复回之势。中间或带琼脂玉露,或泥沙俱下,所携之物,千姿百态,不一而足。...
你的朋友圈里或者斗图史记中,是不是有见过这样一个表情包配文:总有刁民想害朕。这句话的故事是这样的:很久很久以前有个国王,他总是拥有着很多很多的钱,很多很多的子民,可是他过的一点都不幸福。国王总是认为有人想害他,害怕别人抢了他国王的位子。他总是说,总有刁民想害朕。国王的女儿是...
测试1,换行。 测试2。 测试3。
【日更163】 我的“日更计划”又开始“欠账”了,而且还欠了好几篇,事实上,这已经不是第一次了,人生中有很多事情只要发生过一次,就很容易再次发生,毕竟第二次给自己找起借口来相对容易多了。 昨晚在电脑前坐了好几个小时,但都在网上漫无目的地消磨时间,虽然知道自己应该开始写东西,...

我要回帖

更多关于 unity使用protobuf 的文章

 

随机推荐