UN5L4——Protobuf

Protobuf

Protobuf 全称是 protocol-buffers(协议缓冲区),是谷歌提供给开发者的一个开源的协议生成工具
它的主要工作原理和我们之前做的自定义协议工具类似,只不过它更加的完善,可以基于协议配置文件生成
C++、Java、C#、Objective-C、PHP、Python、Ruby、Go 等等语言的代码文件

它是商业游戏开发中常常会选择的协议生成工具,有很多游戏公司选择它作为协议工具来进行网络游戏开发
因为它通用性强,稳定性高,可以节约出开发自定义协议工具的时间

protocol-buffers 官网:Protocol Buffers Documentation (protobuf.dev)

Protobuf 的使用流程

  1. 下载对应语言要使用 Protobuf 相关内容
  2. 根据配置规则编辑协议配置文件
  3. 用 Protobuf 编译器,利用协议配置文件生成对应语言的代码文件
  4. 将代码文件导入工程中进行使用

下载Protobuf相关内容——生成DLL文件

  1. 在官网中前往下载地址,protocol-buffers 官网:Protocol Buffers Documentation (protobuf.dev)

  2. 下载 protobuf-csharp

    (注:在 2024 年的今天,已经不需要选择特定语言的安装包,直接下载 github上 release 中的最近 Pre-Release版本即可)
    image

    解压后里面已经包含了所有语言的 Protobuf 相关

  3. 解压后打开 csharp\src​ 中的 Google.Protobuf.sln

  4. 选择 Google.Protobuf 右键生成 dll文件

    生成时无法解析.NET SDK报错问题

    请注意:如果生成时报错:image

    这是因为你的电脑上安装了另外一个版本.NET SDK导致的,你需要修改为你所安装的.NET SDK
    如何查看安装了什么.NET SDK,使用cmd或者powershell,输入dotnet --list-sdks即可查看你所拥有的.NET SDK

    image

    然后,在你下载的protobuf文件夹里找到一个叫global.json​的文件,将其中的version​改为你所拥有的.NET SDK
    注意:下图内的version具体输入什么由你电脑上安装的.NET SDK版本为准,下图的8.0.202仅代表笔者的版本

    image

    修改完毕后,重新生成

  5. csharp\src\Google.Protobuf\bin\Debug 路径下找到对应 .net 版本的 dll 文件(我们使用 4.5 即可)

    image

  6. 将 net45 中的 dll 文件导入到 Unity 工程中的 Plugins 插件文件夹中

下载 Protobuf 相关内容——准备编译器

  1. 在官网中前往下载地址,protocol-buffers 官网:Protocol Buffers Documentation (protobuf.dev)

  2. 下载 protoc-版本-win32​ 或者 protoc-版本-win64​(没看到的话,记得点一下 Show all __ assets

    image

  3. 解压后获取 bin 文件夹中的 protoc.exe 可执行文件,
    可将其放入 Unity 工程中,方便之后的使用(你也可以不放入 Unity 工程,记住它的路径即可)