更新日期:2025年3月26日。
Github 仓库:https://github.com/SaiTingHu/HTFramework
Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework
索引
一、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
。