news 2026/9/9 14:50:44

Unity Protobuf实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity Protobuf实践

官方文档:https://protobuf.com.cn/overview/

1. 获取Protobuf:

下载源码并生成dll:

GitHub - protocolbuffers/protobuf: Protocol Buffers - Google's data interchange format

解压选择csharp:

VS打开项目:

生成解决方案:

获取dll:

(.net2.0只包含Protobuf.dll,其他dll得从.net45获取)

导入Unity Plugins目录:

2. 使用protoc工具获取协议对应的.cs文件:

新建proto文件:

syntax = "proto3"; package Proto; message Info { string nameValue=1; int32 levelValue=2; }

使用protoc获取cs:

cd C:\Users\59886\Desktop\SeeURP6\Tools\Proto\ protoc.exe --proto_path . protos/Info.proto --csharp_out=./out/

3. 在Unity使用cs:

序列化与反序列化工具:

public class ProtoTool { /// <summary> /// 序列化 /// </summary> /// <param name="message"></param> /// <returns></returns> public static byte[] Serialize(IMessage message) { return message.ToByteArray(); } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="packct"></param> /// <returns></returns> public static T DeSerialize<T>(byte[] packct) where T : IMessage, new() { IMessage message = new T(); try { return (T)message.Descriptor.Parser.ParseFrom(packct); } catch (System.Exception e) { throw e; } } }

实例:

Info info = new Info(); info.NameValue = "liu"; info.LevelValue = 1; byte[] data = ProtoTool.Serialize(info); Info info2 = ProtoTool.DeSerialize<Info>(data); Debug.LogError($"nameValue = {info2.NameValue}, levelValue = {info2.LevelValue}");

反序列化时,可从协议生成的类中获取Parser:

参考:在Unity中使用Protobuf进行序列化_unity c# proto buffer-CSDN博客

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 14:50:20

8款高性价比AI论文平台横向实测,本硕博撰稿避坑全指南

前言&#xff1a;AI 写论文乱象频发&#xff0c;实测 8 款工具理清适配边界 每到毕业季&#xff0c;本科生、硕博生都会集中寻找 AI 论文辅助工具&#xff0c;市面各类写作软件层出不穷&#xff0c;但普遍存在几类硬伤&#xff1a;虚假参考文献、无法匹配本校格式、不支持公式代…

作者头像 李华
网站建设 2026/9/9 14:48:40

SQL约束详解:从数据完整性到生产环境最佳实践

很多同学学 SQL 时&#xff0c;会把大部分精力花在 SELECT、JOIN、窗口函数这些“查询”语法上&#xff0c;觉得约束不过是建表语句里几个可有可无的关键字。但真正到业务系统上线、数据量开始增大时&#xff0c;问题就来了&#xff1a;用户表里出现几千条重复邮箱&#xff0c;…

作者头像 李华
网站建设 2026/9/9 14:48:27

MKOnlinePlayer v2.4部署详解:PHP在线音乐播放器的搭建与二次开发

简介&#xff1a;这份PHP在线音乐播放器源码MKOnlinePlayer v2.4修复版&#xff0c;面向网站管理员、开发者及个人站长&#xff0c;提供无需客户端、基于浏览器的在线音乐播放解决方案。源码采用PHP服务端脚本&#xff0c;支持歌曲列表管理、搜索、多种播放模式、播放进度调节、…

作者头像 李华
网站建设 2026/9/9 14:48:21

Gemini CLI 如何启用 Model Steering 在任务执行中实时纠偏

Gemini CLI 如何启用 Model Steering 在任务执行中实时纠偏 【免费下载链接】gemini-cli An open-source AI agent that brings the power of Gemini directly into your terminal. 项目地址: https://gitcode.com/GitHub_Trending/gemi/gemini-cli 当 Gemini CLI 正在执…

作者头像 李华
网站建设 2026/9/9 14:48:12

前端可编程图表实践:Mermaid+SVG+HTML工程化落地

1. 项目概述&#xff1a;从一张图开始的前端可视化工程实践 “diagram-design”这个词最近在前端圈子里反复出现&#xff0c;不是指某个具体工具&#xff0c;而是一整套围绕 可编程图表生成与嵌入 的工作流。我做可视化项目七年&#xff0c;从最早手绘流程图贴进PPT&#xff…

作者头像 李华
网站建设 2026/9/9 14:47:18

OpenClaw 完全卸载指南:从安装方式到残留清理一步到位

说个挺现实的事&#xff1a;OpenClaw 这阵子确实火&#xff0c;尤其是想在本地跑 Agent、接微信飞书、玩多模型组合的朋友&#xff0c;基本都折腾过一遍。可问题在于&#xff0c;这工具安装的时候是全家桶式地往你机器里塞东西&#xff0c;卸载的时候却没人告诉你它把零件都藏哪…

作者头像 李华