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 序列化数据的更多相关文章

  1. google protobuf序列化原理解析 (PHP示例)

    一.简介 Protocol Buffers是谷歌定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据量小, ...

  2. Google protobuf序列化以及反序列化

    序列化的目的是将对象持久化到硬盘或者用于网络传输.java也提供了序列化技术,非常简单,只要实现Serializable接口即可.如下: public class commonService impl ...

  3. python protobuf序列化repeated运用

    下面是proto描述文件的定义 message Person { required string name = 1; required int32 id = 2; optional string em ...

  4. 【通信框架】Google的开源通信框架protobuf概述

    在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 一.作用 protobuf(Protocol Buffers)是Google内部 ...

  5. protobuf protocol-buffers 序列化数据 gobs pickling string XML 用C实现的cPickle比pickle快1000倍 protobuf2 protobuf3 差异

    场景: 浏览器请求--->python数据生成--->python-生成excel--->浏览器下载excel 目标: 重构为 浏览器请求--->python数据生成---&g ...

  6. Protobuf在Python中的应用(序列化数据)

    1.了解Protobuf Protocol Buffer是Google的语言中立的,平台中立的,可扩展机制的,用于序列化结构化数据 - 对比XML,但更小,更快,更简单.您可以定义数据的结构化,然后可 ...

  7. VS下使用Google Protobuf完成SOCKET通信

    如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信 出处:如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信 最近一 ...

  8. 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识

    大数据技术的发展是一个非常典型的技术工程的发展过程,荣辛通过对于谷歌经典论文的盘点,希望可以帮助工程师们看到技术的探索.选择过程,以及最终历史告诉我们什么是正确的选择. 何为大数据   "大 ...

  9. google protobuf使用

    下载的是github上的:https://github.com/google/protobuf If you get the source from github, you need to gener ...

  10. (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-1

    Google的Protobuf在业界非常流行,很多商业项目选择Protobuf作为编解码框架,这里一起回顾一下Protobuf    的优点.(1)在谷歌内部长期使用,产品成熟度高:(2)跨语言,支持 ...

随机推荐

  1. 实现一个前端动态模块组件(Vite+原生JS)

    1. 引言 在前面的文章<使用Vite创建一个动态网页的前端项目>中我们实现了一个动态网页.不过这个动态网页的实用价值并不高,在真正实际的项目中我们希望的是能实现一个动态的模块组件.具体来 ...

  2. Win32汇编学习笔记02.RadAsm和联合编译

    https://bpsend.net/thread-151-1-1.html 汇编使用资源 汇编使用资源的方式和C的一样,也是把资源文件 rc 编译成 res 再链接进去,汇编没有自己的资源编辑器,需 ...

  3. Mysql常用数据基本类型

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  4. 探秘Transformer系列之(36)--- 大模型量化方案

    探秘Transformer系列之(36)--- 大模型量化方案 目录 探秘Transformer系列之(36)--- 大模型量化方案 0x00 概述 0x01 8位量化 1.1 LLM.int8() ...

  5. ARP服务及欺骗

    ARP协议 定义:ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将网络层的IP地址映射为数据链路层的MAC地址.ARP协议在局域网中非常重要,因为网 ...

  6. go 进阶训练营 微服务可用性(中)笔记

    过载保护 令牌桶算法 存放固定容量令牌的桶,按照固定速率往桶里添加令牌 https://pkg.go.dev/golang.org/x/time/rate 漏桶算法 作为计量工具(The Leaky ...

  7. DTMO 直播预告|Taier 的 Web 前端架构解析

    原文链接:DTMO 直播预告|Taier 的 Web 前端架构解析 一.直播介绍 上两期,我们为大家分享了 Taier 入门及控制台的介绍,本期我们为大家分享 Taier 的 Web 前端架构介绍. ...

  8. ArcObjects SDK 009 Map-Layer的结构

    1.Map-Layer主干结构 一个mxd文件可以包含多个地图,但我们常用的大部分都是包含一个地图.一个地图可以包含多个图层组和图层,而图层指向的则是实际数据.图层可以控制数据是否显示.显示样式.最大 ...

  9. C/C++ 地震数据SEGY文件 IBM格式与PC格式的转换

    SEGY IO (IBM&PC) 本文档将介绍SEGY的读取与写入过程,其中包括IBM与PC两种数据格式的转换. 程序将调用IEEE2IBM.cpp文件完成IBM与PC格式的互相转换. 新建头 ...

  10. SQL Server 中的检查账号是否被锁定-用户登陆失败的原因与解决方案

    在使用 SQL Server 数据库时,用户可能会遇到"用户登陆失败"的问题.这种问题不仅会影响数据库的使用,也可能导致应用程序的中断.因此,了解这一问题的原因及其解决方案至关重要 ...