Protocol Buffer

本文介绍Unity手游开发中使用的主流数据通讯协议解决方案——ProtoBuf。ProtoBuf是Google提供的高效序列化框架,支持多种编程语言。文章详细讲解了ProtoBuf的基本语法及如何在Unity项目中集成使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前市面上的unity手游开发主流数据通讯协议的解决方案。

数据通讯格式。

protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,

因此比传统的 XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法

定义结构化的消息格式,然后送给命令行工具,工具将自 动生成相关的类,可以支持java、c++、python等语言环境。(注意原生不支持C#)

通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序 列化工作。


ProtoBuf

基本语法

1.定义消息 message 关键字

message c2s_login_game_request{

required string name = 1;

required string password = 2;

1和2不是赋值 是分配标识号

}


2.分配标识号

<1>每个字段都有唯一的标识号。这些消息是用来在消息的二进制格式中识别各个字段的,一旦开始使用就不能在修改。

<2>最小的标示号可以从1开始,最大到2^229

<3>不可使用其中的[19000 -19999]的标识号


3.required(表示该值必须要设置)


4.optional(消息格式中该字段可以有0个或1个值 - 不超过1个)


5.repeated(重复的值的顺序会被保留,表示该值可以重复,相当于从c# list)


6.proto文件可以添加注释


7.导入定义如果想要使用的消息类型已经在其他.proto文件中已经定义过

你可以通过导入其他的.proto文件中的定义来使用它们。

写法如下:

import "myproject/other_protos.proto";


8.嵌套类型

你可以在其他消息类型中定义、使用消息类型,在下面的例子中,ItemInfo消息结构就定义在GetSelfItem_Response消息结构内,如:

message GetSelfItem_Response

{

message ItemInfo

{

required uint32 ItemID = 1;//道具ID

required uint64 ItemCount = 2;//数量

optional string property = 3;//属性

}

repeated ItemInfo Item = 1;

}


9.package+命名空间名

Protobuf源代码下载地址: https://github.com/mgravell/protobuf-net 



使用方法:

1.创建需要使用protobuf作为交互格式的unity项目

2.将下载的源代码拷贝到Assets目录

3.导入unity之后会报一个错

解决:在 unity项目Assets目录中创建smcs.rsp文件,内容为-unsafe,其作用为可编译不安全代码。

4.重启unity 引擎,可以自动清除错误。


Proto To C#代码生成

使用命令符生成.cs文件:


也可以使用批处理工具快速生成cs文件

1.将proto文件放入工具proto文件夹
2.点击CreatCsharp批处理
3.打开CS文件夹获取自动生成的.cs文件



资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值