Unity 通信方案 - 使用 Google Protobuf 序列化数据
1.下载和编译
1.1 下载ProtoBuf源文件
从 github 下载最新的 protoBuf 库,如下图所示 Releases · protocolbuffers/protobuf (github.com)

1.2 编译dll和导入
解压后打开 /scharp/src 中的 sln 工程文件

选择Release,Google.Protobuf,之后在生成中生成文件

在以下路径中可以找到生成的所有文件 \csharp\src\Google.Protobuf\bin\Release\net45

把所有文件都导入Plugins中,否则会报 Unable to resolve reference 'System.Runtime.CompilerServices.Unsafe'. Is the assembly missing or incompatible with the current platform? 这个错误

1.3 使用protoc编译成目标语言
下载应用程序用于将proto文件编译成c#需要的文件

编写一个proto格式的脚本,命名为 test.proto
// 指定版本
syntax = "proto3";
// C#中的命名空间(namespace)
package ProtoTest; // 消息类
message MsgResult {
// 消息码
int32 code = 1;
// repeated 相当于一个数组
repeated int32 positions = 2;
}
在该 exe 页面下打开一个 cmd 命令窗口,将 test.proto 编译成 csharp 的版本
protoc.exe --csharp_out=. test.proto
1.4 使用生成的脚本序列化和反序列化
把csharp脚本导入到unity中,可以跟普通的序列化和反序列化一样使用
// 序列化
MsgResult serializeMsg = new ProtoTest.MsgResult()
{
Code = 100, Positions = { 1, 2, 3, 4, 5 }
};
var json = serializeMsg.ToString(); // 转 json
var byteStr = serializeMsg.ToByteString(); // 转 byte String
var byteArr = serializeMsg.ToByteArray(); // 转 byte Array // 反序列化
var deserialzeMsg = ProtoTest.MsgResult.Parser.ParseFrom(response.Data);
Unity 通信方案 - 使用 Google Protobuf 序列化数据的更多相关文章
- google protobuf序列化原理解析 (PHP示例)
一.简介 Protocol Buffers是谷歌定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据量小, ...
- Google protobuf序列化以及反序列化
序列化的目的是将对象持久化到硬盘或者用于网络传输.java也提供了序列化技术,非常简单,只要实现Serializable接口即可.如下: public class commonService impl ...
- python protobuf序列化repeated运用
下面是proto描述文件的定义 message Person { required string name = 1; required int32 id = 2; optional string em ...
- 【通信框架】Google的开源通信框架protobuf概述
在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com QQ:1494713801 一.作用 protobuf(Protocol Buffers)是Google内部 ...
- protobuf protocol-buffers 序列化数据 gobs pickling string XML 用C实现的cPickle比pickle快1000倍 protobuf2 protobuf3 差异
场景: 浏览器请求--->python数据生成--->python-生成excel--->浏览器下载excel 目标: 重构为 浏览器请求--->python数据生成---&g ...
- Protobuf在Python中的应用(序列化数据)
1.了解Protobuf Protocol Buffer是Google的语言中立的,平台中立的,可扩展机制的,用于序列化结构化数据 - 对比XML,但更小,更快,更简单.您可以定义数据的结构化,然后可 ...
- VS下使用Google Protobuf完成SOCKET通信
如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信 出处:如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信 最近一 ...
- 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识
大数据技术的发展是一个非常典型的技术工程的发展过程,荣辛通过对于谷歌经典论文的盘点,希望可以帮助工程师们看到技术的探索.选择过程,以及最终历史告诉我们什么是正确的选择. 何为大数据 "大 ...
- google protobuf使用
下载的是github上的:https://github.com/google/protobuf If you get the source from github, you need to gener ...
- (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-1
Google的Protobuf在业界非常流行,很多商业项目选择Protobuf作为编解码框架,这里一起回顾一下Protobuf 的优点.(1)在谷歌内部长期使用,产品成熟度高:(2)跨语言,支持 ...
随机推荐
- 实现一个前端动态模块组件(Vite+原生JS)
1. 引言 在前面的文章<使用Vite创建一个动态网页的前端项目>中我们实现了一个动态网页.不过这个动态网页的实用价值并不高,在真正实际的项目中我们希望的是能实现一个动态的模块组件.具体来 ...
- Win32汇编学习笔记02.RadAsm和联合编译
https://bpsend.net/thread-151-1-1.html 汇编使用资源 汇编使用资源的方式和C的一样,也是把资源文件 rc 编译成 res 再链接进去,汇编没有自己的资源编辑器,需 ...
- Mysql常用数据基本类型
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 探秘Transformer系列之(36)--- 大模型量化方案
探秘Transformer系列之(36)--- 大模型量化方案 目录 探秘Transformer系列之(36)--- 大模型量化方案 0x00 概述 0x01 8位量化 1.1 LLM.int8() ...
- ARP服务及欺骗
ARP协议 定义:ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将网络层的IP地址映射为数据链路层的MAC地址.ARP协议在局域网中非常重要,因为网 ...
- go 进阶训练营 微服务可用性(中)笔记
过载保护 令牌桶算法 存放固定容量令牌的桶,按照固定速率往桶里添加令牌 https://pkg.go.dev/golang.org/x/time/rate 漏桶算法 作为计量工具(The Leaky ...
- DTMO 直播预告|Taier 的 Web 前端架构解析
原文链接:DTMO 直播预告|Taier 的 Web 前端架构解析 一.直播介绍 上两期,我们为大家分享了 Taier 入门及控制台的介绍,本期我们为大家分享 Taier 的 Web 前端架构介绍. ...
- ArcObjects SDK 009 Map-Layer的结构
1.Map-Layer主干结构 一个mxd文件可以包含多个地图,但我们常用的大部分都是包含一个地图.一个地图可以包含多个图层组和图层,而图层指向的则是实际数据.图层可以控制数据是否显示.显示样式.最大 ...
- C/C++ 地震数据SEGY文件 IBM格式与PC格式的转换
SEGY IO (IBM&PC) 本文档将介绍SEGY的读取与写入过程,其中包括IBM与PC两种数据格式的转换. 程序将调用IEEE2IBM.cpp文件完成IBM与PC格式的互相转换. 新建头 ...
- SQL Server 中的检查账号是否被锁定-用户登陆失败的原因与解决方案
在使用 SQL Server 数据库时,用户可能会遇到"用户登陆失败"的问题.这种问题不仅会影响数据库的使用,也可能导致应用程序的中断.因此,了解这一问题的原因及其解决方案至关重要 ...