ET6框架(九)Protobuf消息使用

news2024/11/15 11:05:34

在这里插入图片描述

文章目录

  • 一、序列化和反序列化
  • 二、什么是Prototbuf?
  • 三、ET工程中的Proto:
  • 四、查看消息类型
  • 五、生成编译Proto2CS:


一、序列化和反序列化

序列化 : 将程序中的对象转化为字节序列的过程
反序列化 : 把字节回复为程序中的过程
在网络游戏通讯过程中,实际传输的数据形式是以字节序列进行传输
序列和反序列化的方式有多种,而ET框架则使用较为常见的Protobuf方式。


二、什么是Prototbuf?

Protobuf是一个用于生前通讯消息的代码生成器。
Prototbuf是一个Google公司提出的开源的轻便高效的结果化数据存储格式。
相对于其他常见的序列格式如Json、XML等格式,Protobuf具有易用性更好,自动化,兼容性数量小,序列化及反序列化速度更快等优势。


三、ET工程中的Proto:

在工程中ET > Proto文件夹中的proto有描述文件
在这里插入图片描述

建议使用VSCode打开,并安装vccode-proto3插件进行查看
OuterMessage.proto
此文件定义的是客户端与服务磁端相互通讯的消息格式
InnerMessage.proto
服务器内部相互通讯的消息格式
MongoMessage.proto
服务器内部相互通讯的消息格式,与InnerMessage不同的是MongoMessage可以传输实体

查文件夹Unity.Model > Codes > Model > Generate > Message > OuterMessage.cs 及 OuterOpcode.cs
这两个脚本里包含了一些数据结构,匀为根据OuterMessage.proto来生成

在这里插入图片描述

需要注意的是消息中的不同数据,数值不能相同,如下面的objectQueryRequest消息中已有90 1 2三个数据,则myKey则不能赋值为此三个数值之一
等号和数字之间需要有空格

在这里插入图片描述


四、查看消息类型

在这里插入图片描述


五、生成编译Proto2CS:

优先需要编译Tools
在这里插入图片描述

在工程中ET > Proto文件夹中点击win_startProtoExport.bat文件 进行生成

在这里插入图片描述

关于苹果不能使用.bat文件
可以选择此处Edit Configuration…
在这里插入图片描述

在Tools.App中的Program arguments:中输入 --AppType=Proto2CS,然后点击Apply即可
生成表可也可以这样操作–AppType=ExcelExporter
在这里插入图片描述

生成列表:
在消息表中使用repeated关键字,即可以在生成时自动生也列表
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可以根据手机的折叠状态改变播放音效:nova Flip 的妙趣音效

由于折叠机最基础的“可折叠”属性,导致折叠机的扬声器相对于人的位置来说会存在更多的变化,在不同的折叠状态下,听感方面可能就会大有不同。 nova Flip手机利用这一特性,首次根据折叠形态差异,自适应了不同形态的音效…

手把手带你实现C语言扫雷进阶(1)(接上回基础版扫雷,附上源码)

文章目录 一、扫雷进阶留下的问题二.非雷扩展周围不是雷函数三、标记雷函数四.查看排雷总时间五、扫雷进阶源码及总结 一、扫雷进阶留下的问题 我们先来看看之前讲扫雷基础的时候留下的一些问题: 是否可以选择游戏难度     ◦ 简单 9 * 9 棋盘,10个雷…

【Qt】Qt 网络 | UDP Socket

文章目录 核心API代码示例服务器客户端 要使用 Qt 网络编程,需要在项目中的 .pro 文件中添加 network 模块 核心API Qt 的 UDP Socket 主要的类有两个 QUdpSocket 和 QNetworkDatagram 因为是 UDP 是面向数据报的,QNetworkDatagram 就是对 数据报的封…

【项目管理】系统设计与开发管理规程(Word完整文件)

2 过程总体描述 2.1 过程概述 2.2 过程流程图 3 过程元素描述 3.1 产品方案 3.2 产品设计 3.3 产品实现 获取方式:本文末个人名片直接获取。 软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表&#xf…

【模拟器-夜神】Mac卡在99%问题

▒ 目录 ▒ 🛫 导读需求 1️⃣ 首次启动提示2️⃣ 手动授权允许加载驱动非苹果CPU苹果CPU 📖 参考资料 🛫 导读 需求 解决模拟器中遇到的问题 ,汇总。 1️⃣ 首次启动提示 首次点击图标启动时会弹出提示: 解决方式如…

本地搭建XSS 漏洞接收平台实践分享

免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担&…

操作系统面试真题总结(二)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 栈空间和空间堆有什么区别?各自优缺点呢? …

diffusion 模型gguf量化使用案例,支持CPU运行

参考: https://github.com/leejet/stable-diffusion.cpp 在线demo使用: https://colab.research.google.com/drive/1NkAzSn3iYOwkY1Jy7qJfV_d2ZMHQmXrK?usp=sharing 一般gguf量化质量 fp16 > Q8 > fp8 > Q4 > Q4k_m > Q4k_s > nf4 安装 !git clone --r…

[H贪心] lc3273. 对 Bob 造成的最少伤害(贪心+排序+推公式+双周赛138_4)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:3273. 对 Bob 造成的最少伤害 题单: na na 2. 题目解析 略低于正常难度的 T4。 显然我们应该尽可能的将伤害高的先消掉,然后写完代码就会发现 WA 了。想太简单了,那就推…

如何在JPG文件中隐写数据

概述 最近在做资源管理器背景的一个功能时,需要将信息传递到DLL中去, 主要就是传递一些比较简单的参数,包括图片的契合度,透明度之类的。通信方式有多种,毕竟是练手的功能,就想找一些以前没用过的方式。 …

心觉:潜意识精准显化(一)开篇

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松搞定人生挑战,实现心中梦想! 挑战日更写作156/1000(完整记录在下面) 公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 每个人都渴望自…

psql常见报错解决

问题 解决 要在管理员模式下启动 pg_ctl start -D "D:\Program\PostgreSQL\data" 注册成服务 D:\Program\PostgreSQL\bin\pg_ctl.exe register -N "postgresql" -D "D:\Program\PostgreSQL\data" -U "postgres" -P "postgre…

华为 HCIP-Datacom H12-821 题库 (1)

有需要题库的可以看主页置顶 1.MSTP 有不同的端口角色,对此说法不正确的是: A、MSTP 中除边缘端口外,其他端口角色都参与 MSTP 的计算过程 B、MSTP 同一端口在不同的生成树实例中可以担任不同的角色。 C、MSTP 域边缘端口是指位于 MST 域的边…

桶排序【算法 14】

桶排序算法详解 桶排序(Bucket Sort)是一种基于分配的排序算法,适用于均匀分布在特定范围内的数据。其核心思想是将输入数据分到若干个桶(Bucket)中,每个桶分别进行排序,最后合并桶内的元素形成…

【STM32】BKP备份寄存器与RTC实时时钟

本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 目录 BKP简介 BKP代码注解 读写备份寄存器 复位备份寄存器 BKP代码 RTC简介 RTC代码注解 RTCCLK时钟源选择 分频器配置 时钟同步 RTC代码 MyRTC.h MyRTC.c main.c BKP简介 BKP&…

TeamTalk路由服务器

路由相关信令和协议设计 enum BuddyListCmdID {// ...... 暂时省略无关信令CID_BUDDY_LIST_USERS_STATUS_REQUEST 522,CID_BUDDY_LIST_USERS_STATUS_RESPONSE 523,// ...... 暂时省略无关信令 };message IMUsersStatReq{//cmd id: 0x020arequired uint32 user_id 1;repeat…

JS设计模式之“名片设计师” - 工厂方法模式

image.png 前言 上篇文章我们了解到什么是简单工厂模式,请参考上篇文章:JS设计模式之 “神奇的魔术师” - 简单工厂模式,不过这是工厂中最简单的一种,本篇文章我们将同大家一起认识一种更复杂的工厂模式,它将给我们提…

【Kubernetes】声明式创建各种资源

k8s声明式创建 kubernetes陈述式创建与声明式创建yaml各个字段含义Pod yaml文件详解deployment.yaml文件详解server.yaml文件详解 k8s中port的区别1、声明式创建pod label包含app: zhangsan2、声明式创建deployment,包含3个nginx副本,label包含app: zhan…

【MyBatis】MyBatis的一级缓存和二级缓存简介

目录 1、一级缓存 1.1 我们在一个 sqlSession 中,对 User 表根据id进行两次查询,查看他们发出sql语句的情况。 1.2 同样是对user表进行两次查询,只不过两次查询之间进行了一次update操作。 1.3 一级缓存查询过程 1.4 Mybatis与Spring整…

Windows10上安装PostgreSQL 16

PostgreSQL是一个先进的、开源的、免费的、功能强大的关系型数据库,它使用并扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展复杂的数据工作负载。PostgreSQL可在Windows、Linux、macOS等多个平台上运行,License使用Postgre…