【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典

server/2025/3/31 4:48:26/

更新日期:2025年3月26日。
Github 仓库:https://github.com/SaiTingHu/HTFramework
Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework

索引

  • 一、SerializableDictionary可序列化字典
    • 1.使用SerializableDictionary
    • 2.实现思路
  • 二、SerializableHashSet可序列化哈希集
    • 1.使用SerializableHashSet
    • 2.实现思路

一、SerializableDictionary可序列化字典

SerializableDictionary<,>可序列化字典类型支持序列化(用于替代不可序列化的Dictionary<,>类型),其拥有与Dictionary<,>一样的适用于频繁查找、插入和删除数据的性能优势。

1.使用SerializableDictionary

使用SerializableDictionary很简单,直接定义SerializableDictionary的可序列化字段即可:

public class Test : HTBehaviour
{[Label("简单字典示例")] public SerializableDictionary<string, string> d1;[Label("复杂字典示例")] public SerializableDictionary<string, Data> d2;protected override void Awake(){base.Awake();foreach (var item in d1){Debug.Log($"简单字典示例中元素:{item.Key} - {item.Value}");}foreach (var item in d2){Debug.Log($"复杂字典示例中元素:{item.Key} - {item.Value}");}}[Serializable]public class Data{public string Name;public int Age;public Vector2 Pos;public Vector3 Angle;public Material Cloth;}
}

在检视器面板是可序列化的(同时支持为其附加各种Inspector特性):

在这里插入图片描述

Tips:为了降低各键值对(Key-Value)之间的视觉干扰,只有选中的键值对(Key-Value)呈现为亮色,其他的显示为暗色。

运行场景:

在这里插入图片描述

2.实现思路

实现思路其实很简单,SerializableDictionary中维护了两个List用于序列化键值对(Key-Value),然后在运行时动态构建一个Dictionary

二、SerializableHashSet可序列化哈希集

SerializableHashSet<>可序列化哈希集类型支持序列化(用于替代不可序列化的HashSet<>类型),其拥有与HashSet<>一样的适用于频繁查找、插入和删除数据的性能优势。

1.使用SerializableHashSet

使用SerializableHashSet很简单,直接定义SerializableHashSet的可序列化字段即可:

public class Test : HTBehaviour
{[Label("简单哈希集示例")] public SerializableHashSet<string> s1;[Label("复杂哈希集示例")] public SerializableHashSet<Data> s2;protected override void Awake(){base.Awake();foreach (var item in s1){Debug.Log($"简单哈希集示例中元素:{item}");}foreach (var item in s2){Debug.Log($"复杂哈希集示例中元素:{item}");}}[Serializable]public class Data{public string Name;public int Age;public Vector2 Pos;public Vector3 Angle;public Material Cloth;}
}

在检视器面板是可序列化的(同时支持为其附加各种Inspector特性):

在这里插入图片描述

运行场景:

在这里插入图片描述

2.实现思路

实现思路其实很简单,SerializableHashSet中维护了一个List用于序列化,然后在运行时动态构建一个HashSet


http://www.ppmy.cn/server/179706.html

相关文章

3.使用epoll实现单线程并发服务器

目录 1. epoll的概述 2. 多线程与epoll的处理流程 2.1 多线程处理流程 2.2 epoll处理流程 3. epoll与多线程的比较 4. epoll的操作函数 4.1 epoll_create() 4.2 epoll_ctl() 4.3 epoll_wait() 5. 示例代码 6. epoll的工作模式 7. 使用O_NONBLOCK防止阻塞 8.运行代…

LeetCode-451. 根据字符出现频率排序

1、题目描述: 给定一个字符串 s &#xff0c;根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。 返回 已排序的字符串 。如果有多个答案&#xff0c;返回其中任何一个。 示例 1: 输入: s "tree" 输出: "eert"…

AI比人脑更强,因为被植入思维模型【19】三脑理论思维模型

定义 三脑理论思维模型是由美国神经科学家保罗麦克莱恩&#xff08;Paul MacLean&#xff09;提出的&#xff0c;该理论认为人类的大脑由三个不同但又相互关联的部分组成&#xff0c;分别是爬虫脑&#xff08;Reptilian Brain&#xff09;、边缘脑&#xff08;Limbic Brain&am…

【赵渝强老师】达梦数据库的数据库对象

达梦数据库中包含各种数据库对象&#xff0c;主要分为两大类型&#xff1a;基本数据库对象和复杂数据库对象。下面分别进行介绍。 视频讲解如下 【赵渝强老师】达梦数据库的数据库对象 一、 基本数据库对象 常见的基本数据库对象有&#xff1a;表、索引、视图、序列、同义词等…

ngx_http_core_location

定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy) {char *rv;u_char *mod;size_t len;ngx_str_t *value, *n…

Vue3自定义指令的注册和使用

局部注册 先在setup中进行局部注册&#xff0c;如果使用Composition API <script setup> import { nextTick, ref } from vue;const overflowIndexes ref(new Set());const handleOverflow (index) > (el) > {nextTick(() > {if (el.scrollWidth > el.cl…

【身份证证件OCR识别】批量OCR识别身份证照片复印件图片里的文字信息保存表格或改名字,基于QT和腾讯云api_ocr的实现方式

项目背景 在许多业务场景中,需要处理大量身份证照片复印件,手动输入其中的文字信息效率低下且容易出错。利用 OCR(光学字符识别)技术可以自动识别身份证图片中的文字信息,结合 QT 构建图形用户界面,方便用户操作,同时使用腾讯 OCR API 能够保证较高的识别准确率。 界面…

oracle查询归档日志使用量

1.统计最近30天的数据 SELECT TRUNC(first_time, DD) "日期", SUM(blocks * block_size) / 1024 / 1024 / 1024 "大小(GB)" FROM v$archived_log WHERE first_time > SYSDATE - 30 -- 统计最近30天的数据 GROUP BY TRUNC(first_time, DD) ORDER BY 1 D…