DeepSeek教unity------MessagePack-01
中文:GitCode - 全球开发者的开源社区,开源代码托管平台
MessagePack是C# 的极速 MessagePack 序列化器。它比 MsgPack-Cli 快 10 倍,并且性能超过其他 C# 序列化器。MessagePack for C# 还内置支持 LZ4 压缩——一种极其快速的压缩算法。性能在诸如游戏、分布式计算、微服务或数据缓存等应用中尤为重要。
这个库通过 NuGet 分发。也有特殊的 Unity 支持。我们针对 .NET Standard 2.0 进行了优化,特别适用于 .NET 8+ 和 .NET Framework。库代码是纯 C#(在某些平台上使用即时 IL 代码生成或 AOT 安全源生成器)。
要使用 NuGet 安装,只需安装 MessagePack 包。还有多种官方和第三方扩展包可用(了解更多请参阅我们的扩展部分):
MessagePack.ReactiveProperty
MessagePack.UnityShims
MessagePack.AspNetCoreMvcFormatter
最低支持的 Unity 版本将是 2022.3.12f1,因为需要通过 C# 源生成器支持 IL2CPP。在 Unity 中使用它需要两个安装步骤。这两个步骤都需要完成,而不仅仅是一个。
1、从 NuGet 使用 NuGetForUnity 安装 MessagePack。从 NuGet -> 管理 NuGet 包 打开窗口,搜索 "MessagePack" 并点击安装。
https://github.com/GlitchEnzo/NuGetForUnity
2、通过引用 Git URL 安装 MessagePack.Unity 包。打开包管理器窗口并点击从 Git URL 添加包,输入以下路径:
https://github.com/MessagePack-CSharp/MessagePack-CSharp.git?path=src/MessagePack.UnityClient/Assets/Scripts/MessagePack
MessagePack 使用 ..* 发布标签,因此你可以指定一个版本,如 #v3.0.0。例如:
https://github.com/MessagePack-CSharp/MessagePack-CSharp.git?path=src/MessagePack.UnityClient/Assets/Scripts/MessagePack#v3.0.0
在 Unity 中,MessagePackSerializer 可以序列化 Vector2、Vector3、Vector4、Quaternion、Color、Bounds、Rect、AnimationCurve、Keyframe、Matrix4x4、Gradient、Color32、RectOffset、LayerMask、Vector2Int、Vector3Int、RangeInt、RectInt、BoundsInt 以及它们的可空类型、数组和列表类型,这通过内置的扩展 UnityResolver 实现。
MessagePack.Unity 在应用程序启动时自动将 UnityResolver 添加到默认选项解析器中,以便启用此序列化。如果你想自定义解析器或更改默认选项,最好记住这一点。在 Unity 包中有如下的代码来实现这一点:
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
private static void Init()
{MessagePackSerializer.DefaultOptions = MessagePackSerializerOptions.Standard.WithResolver(UnityResolver.InstanceWithStandardResolver);
}
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MessagePack;public class GameRoot : MonoBehaviour
{//调用 MessagePackSerializer.Serialize<T>/Deserialize<T> 来序列化/反序列化你的对象实例。//你可以使用 ConvertToJson 方法来获取任何 MessagePack 二进制数据的人类可读表示。private void Start(){var mc = new MyClass{Age = 99,FirstName = "hoge",LastName = "huga",};byte[] bytes = MessagePackSerializer.Serialize(mc);MyClass mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes);Debug.Log($"Age: {mc2.Age}, FirstName: {mc2.FirstName}, LastName: {mc2.LastName}");// 你可以将 MessagePack 二进制数据转储为人类可读的 JSON。// 使用索引键(而不是字符串键)会序列化为 MessagePack 数组,// 因此属性名称不可用。// [99,"hoge","huga"]var json = MessagePackSerializer.ConvertToJson(bytes);Debug.Log(json);}
}//定义要序列化的结构或类,并用[MessagePackObject] 属性对其进行注解。使用[Key] 属性对需要序列化成员(包括字段和属性)进行注解。
[MessagePackObject]
public class MyClass
{// Key 属性需要一个序列化索引(或字符串名称)// 这些值必须是唯一的,并且还需要考虑版本控制。// Keys 在后续部分有更详细的描述。[Key(0)]public int Age { get; set; }[Key(1)]public string FirstName { get; set; }[Key(2)]public string LastName { get; set; }// 所有不应被序列化的字段或属性必须用 [IgnoreMember] 进行注解。[IgnoreMember]public string FullName { get { return FirstName + LastName; } }
}
/****************************************************文件:Test_01.cs作者:Edision日期:#CreateTime#功能:示例1
*****************************************************/using MessagePack;
using UnityEngine;public class Test_01 : MonoBehaviour
{//调用 MessagePackSerializer.Serialize<T>/Deserialize<T> 来序列化/反序列化你的对象实例。//你可以使用 ConvertToJson 方法来获取任何 MessagePack 二进制数据的人类可读表示。public void Test(){var mc = new MyClass{Age = 99,FirstName = "hoge",LastName = "huga",};byte[] bytes = MessagePackSerializer.Serialize(mc);MyClass mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes);Debug.Log($"【Test_01Logo】Age: {mc2.Age}, FirstName: {mc2.FirstName}, LastName: {mc2.LastName}");// 你可以将 MessagePack 二进制数据转储为人类可读的 JSON。// 使用索引键(而不是字符串键)会序列化为 MessagePack 数组,// 因此属性名称不可用。// [99,"hoge","huga"]var json = MessagePackSerializer.ConvertToJson(bytes);Debug.Log($"【Test_01Logo】{json}");}//定义要序列化的结构或类,并用[MessagePackObject] 属性对其进行注解。使用[Key] 属性对需要序列化成员(包括字段和属性)进行注解。[MessagePackObject]public class MyClass{// Key 属性需要一个序列化索引(或字符串名称)// 这些值必须是唯一的,并且还需要考虑版本控制。// Keys 在后续部分有更详细的描述。[Key(0)]public int Age { get; set; }[Key(1)]public string FirstName { get; set; }[Key(2)]public string LastName { get; set; }// 所有不应被序列化的字段或属性必须用 [IgnoreMember] 进行注解。[IgnoreMember]public string FullName { get { return FirstName + LastName; } }}
}
相关文章:
DeepSeek教unity------MessagePack-01
中文:GitCode - 全球开发者的开源社区,开源代码托管平台 MessagePack是C# 的极速 MessagePack 序列化器。它比 MsgPack-Cli 快 10 倍,并且性能超过其他 C# 序列化器。MessagePack for C# 还内置支持 LZ4 压缩——一种极其快速的压缩算法。性能在诸如游戏…...
知识拓展:Python序列化模块 marshal 模块详解
Python marshal 模块学习笔记 1. 简介 marshal 是 Python 的内部序列化格式,主要用于序列化和反序列化 Python 对象。它是 Python 字节码(.pyc文件)使用的序列化格式,比 pickle 更原始和受限,但也更快速和安全。 http…...
leetcode 2684. 矩阵中移动的最大次数
题目如下 数据范围 本题使用常规动态规划就行,不过要注意由于有三个转移的方向,所以我们对dp数组的遍历应该是从上到下 从左到右即按列优先遍历。通过代码 class Solution { public:int maxMoves(vector<vector<int>>& grid) {int …...
机械学习基础-6.更多分类-数据建模与机械智能课程自留
data modeling and machine intelligence - FURTHER CLASSIFICATION 混淆矩阵评估指标:灵敏度和特异度ROC 曲线文字说明部分 AUC:ROC曲线下面积 支持向量机思路补充背景知识点积超平面(HYPERPLANES超平面的法向量到超平面的最小距离数据集与超…...
自动化测试实战
http://8.137.19.140:9090/blog_login.htm 账号: lisi 密码: 123456 上面是系统链接 1. 自动化测试的步骤 1.1 编写Web测试用例 1.2 创建空项目添加依赖 然后我们创建一个新的java项目(使用maven管理),然后引入我们的配置文件:屏幕截图,驱动管理,selenium库 <dependency…...
qt QPlainTextEdit总结
QPlainTextEdit 概述 用途:专为处理纯文本设计,适合大文本编辑和简单文本显示(如日志、代码编辑器)。 特点:相比QTextEdit,轻量高效,支持快速加载和滚动大文件,默认不支持富文本。 …...
AWS SES 邮件服务退信/投诉处理与最佳实践指南
在使用 AWS SES 发送邮件时,合理处理退信和投诉是维护发送声誉的关键。本文将详细介绍 SES 中的退信/投诉处理机制以及相关最佳实践。 一、退信处理机制 © ivwdcwso (ID: u012172506) 1.1 退信类型 在 SES 中,退信分为两种类型: 硬退信(Hard Bounce) 永久性错误,如无效…...
理解WebGPU 中的 GPUAdapter :连接浏览器与 GPU 的桥梁
在 WebGPU 开发中, GPUAdapter 是一个至关重要的对象,它作为浏览器与 GPU 之间的桥梁,为开发者提供了请求 GPU 设备、查询 GPU 特性以及获取适配器信息的能力。本文将详细介绍 GPUAdapter 的核心属性和方法,并通过实际代码…...
rpx和px混用方案
(1)创建一个全局的样式配置文件: // styles/variables.scss :root {// 基础字体大小--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;// 响应式间距--spacing-xs: 5px;--spacing-sm: 10px;--spacing-…...
光伏设计软件分类:无人机、Unity3D引擎齐上阵
无人机3D设计 无人机可搭载高分辨率光学相机、激光雷达等测绘设备,对目标区域进行全方位、多角度的航拍作业。通过对采集到的影像数据进行导入处理,运用复杂的图像识别算法与三维重建技术,构建出云端实景3D模型,在实景3D模型中进…...
太速科技-616-基于6U VPX XCVU9P+XCZU7EV的双FMC信号处理板卡
基于6U VPX XCVU9PXCZU7EV的双FMC信号处理板卡 一、板卡概述 板卡基于6U VPX标准结构,包含一个XCVU9P 高性能FPGA,一片XCZU7EV FPGA,用于 IO扩展接口,双路HPC FMC扩展高速AD、DA、光纤接口等。是理想应用于高性能数字计算&…...
国产鲲鹏920+欧拉+达梦
1,访问达梦官网 产品下载-达梦数据 1.1,官网没有欧拉的版本; 1.2,拨打客服热线,联系售前单独获取试用版 2,创建鲲鹏920欧拉环境: 2.1,阿里云:没有arm系统 2.2…...
LeetCode--146. LRU 缓存【Golang中的list】
146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,…...
查看notebook的jupyter token
如果你忘记了jupyter的token,那么你可以命令行登录后台,查看。 jupyter notebook list 把token复制下,贴到网站上即可。jupyter登录页已经提示了。...
vue+springboot+webtrc+websocket实现双人音视频通话会议
前言 最近一些时间我有研究,如何实现一个视频会议功能,但是找了好多资料都不太理想,最终参考了一个文章 WebRTC实现双端音视频聊天(Vue3 SpringBoot) 只不过,它的实现效果里面只会播放本地的mp4视频文件&…...
什么是高亮环形光源
高亮环形光源是一种常用于机器视觉、工业检测和光学测量的照明设备。其特点是光线均匀、亮度高,并且呈环形分布,能够为被检测物体提供均匀的照明,减少阴影和反光,提高图像采集的质量。 主要特点: 环形设计:光源呈环形分布,适合安装在镜头周围,能够为物体提供均匀的照明…...
2025年3月一区SCI-混沌进化优化算法Chaotic evolution optimization-附Matlab免费代码
引言 本期介绍了一种基于混沌动力学的元启发式算法-混沌进化优化算法Chaotic evolution optimization,CEO。CEO的主要灵感来源于二维离散记忆映射的混沌演化过程。通过利用记忆映射的超混沌特性,对CEO算法进行数学建模,为进化过程引入随机搜…...
51单片机俄罗斯方块开机动画
/************************************************************************************************************** * 名称:Game_Star * 功能:开机动画 * 参数:NULL * 返回:NULL ******************************************…...
RK3588开发板部署DeepSeek-R1-Distill-Qwen-1.5B的步骤及问题
目录 引言 为什么要做端侧部署 技术发展层面 应用需求层面 开发与成本层面 产业发展层面 模型选择 模型蒸馏 模型转换 量化选择 量化方式 模型大小 计算效率 模型精度 测试 测试程序编译 测试结果 结语 引言 最近DeepSeek已经成为一个非常热门的话题&#x…...
网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施
网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施 一、前言二、SIEM 系统的功能概述2.1 数据收集与整合2.2 实时监控与威胁检测2.3 事件响应与自动化2.4 合规性管理 三、SIEM 系统选型的关键因素3.1 功能需求评估3.2 可扩展性与性能3.3 易用性与可维…...
大语言模型剪枝技术:Týr-the-Pruner框架解析
1. 大语言模型剪枝技术背景与挑战在自然语言处理领域,大语言模型(LLMs)如Llama、GPT等已经展现出惊人的能力,但其庞大的参数量(通常达到数十亿甚至上千亿)带来了显著的部署挑战。以Llama-3.1-70B为例&#…...
Claude代码技能库:AI编程辅助的范式转变与工程实践
1. 项目概述:一个面向Claude的代码技能库最近在AI编程辅助的圈子里,一个名为warren618/claude-code-openclaw-skills的项目引起了我的注意。乍一看这个标题,你可能会有点懵——“Claude”是谁?“OpenClaw”又是什么?这…...
第70篇:Vibe Coding时代:AI Coding 平台运维手册,解决 Agent 上线后故障排查没有 SOP 的问题
第70篇:Vibe Coding时代:AI Coding 平台运维手册,解决 Agent 上线后故障排查没有 SOP 的问题 一、问题场景:Agent 平台上线了,但一出问题大家都不知道怎么查 当 AI Coding Agent 进入团队使用后,常见故障会越来越多: 1. 用户说任务一直不动 2. 任务状态卡在 RUNNING 3…...
从手机解锁合法化看DMCA、消费者权利与设备所有权的博弈
1. 从“越狱”到合法化:一场关于设备所有权的消费者权利运动2013年初,如果你在美国买了一部合约机,然后想把它带到另一家运营商使用,你面临的不仅仅是不兼容的技术问题,还可能是一项重罪——最高五年的监禁和五十万美元…...
RAG和向量索引
为特定用例设计代理时,需要确保语言模型已建立基础并使用与用户所需内容相关的事实信息。 虽然语言模型针对大量数据进行了训练,但它们可能无权访问你想要向用户提供的知识。 若要确保代理基于特定数据提供准确且特定于域的响应,可使用检索增…...
Dev Containers实战:容器化开发环境配置与团队协作指南
1. 项目概述:一个容器化的开发环境定义仓库如果你和我一样,经常需要在不同的机器上切换工作,或者团队里有新成员加入,那么“环境配置”这件事,绝对能排进程序员最头疼问题的前三名。我经历过无数次这样的场景ÿ…...
别再求公司账号了!个人开发者也能搞定uniapp打包iOS(保姆级证书+profile配置)
个人开发者独立完成uniapp iOS打包全流程指南 在移动应用开发领域,iOS平台始终是开发者无法绕开的重要阵地。然而,许多独立开发者和小团队常常被苹果开发者账号的门槛所困扰,误以为必须依赖企业级账号才能完成应用打包和上架。实际上&#x…...
【独家首发】DeepSeek-V2模型GPU利用率可视化方案:仅需3个自定义Metrics,告别盲调参数
更多请点击: https://intelliparadigm.com 第一章:DeepSeek Grafana可视化 DeepSeek 是一款高性能、低延迟的开源时序数据引擎,其原生支持 Prometheus 兼容指标暴露。将 DeepSeek 与 Grafana 集成,可实现对模型推理吞吐、GPU 显存…...
PX4-Autopilot扩展卡尔曼滤波状态估计系统深度解析与实战调优
PX4-Autopilot扩展卡尔曼滤波状态估计系统深度解析与实战调优 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot PX4-Autopilot作为开源无人机飞控系统的标杆,其核心状态估计模块EKF2&…...
Aura包管理器与Faur元数据服务器:了解Arch Linux包管理的终极解决方案
Aura包管理器与Faur元数据服务器:了解Arch Linux包管理的终极解决方案 【免费下载链接】aura A multilingual package manager for Arch Linux and the AUR. 项目地址: https://gitcode.com/gh_mirrors/aur/aura Aura是一个多语言包管理器,专为Ar…...
