4. 使用List模拟字典的键值对,内部使用一个字典存储键的索引,在运行时更改字典可将修改反映到List(Inspector)上,并使用ReorderableList和PropertyDrawer自定义绘制方法。 原文链接:SerializableDictionary - Unify Community Wiki 缺点:只能单行显示,无法用于复杂数据结构。 方法4应该可以满足大多数人的需求,但没有满足我的...
这样我们正常定义字典结构,字典就可以正常显示在Inspector面板中啦! 代码语言:javascript 复制 using System.Collections.Generic;using UnityEngine;using Sirenix.OdinInspector;publicclassDicTest:SerializedMonoBehaviour{publicDictionary<int,string>prefabDataDic=newDictionary<int,string>();} 实现效果如下: Odin插件时Uni...
在Unity中,字典无法在Inspector中进行序列化显示。通过深入探索,发现了几种方法。然而,每种方法都有其局限性。使用foreach遍历字典的每一步都需要手动编写,且在运行过程中无法与字典动态绑定。另一种方法涉及使用两个List来保存键和值,这需要为每种类型的字典创建一个类,不够灵活。接着,使用Odin ...
五、在inspector面板中支持Dictionary序列化 总体设计思路是通过list实现对Dictionary的支持,由于Unity的inpsector面板中并不直接支持字典,所以我们还需要自定义Property,通过CustomPropertyDrawer属性来实现 1、在MonoBehaviour中实现Dictionary序列化 定义SerializableDictionary类,并继承IDictionary接口,重写该IDictionary接口函数 using...
说明 通过Init真正生成字典,通过Destroy销毁字典。 通过TryGetValue获取目标值,通过TryAdd添加数据,通过Remove删除数据。 通过ShowDict...
开发过程中,经常需要在Unity的Inspector面板中对场景进行一些数据配置。Unity也为我们提供了许多序列化数据的方式,不过没有提供Dictionary数据的可视化序列化;今天在AssetStrore中找到一款免费的SerializableDictionary插件,非常轻巧,可是很方便,你可以根据自己的需求自定义你需要序列化的Dictionary类型,且不需要写任何写编辑器代...
在Inspector上显示字典,这个比较特殊,需要用到Odin的序列化功能才行,而且字典所在的脚本必须继承Odin序列化后的SerializedMonoBehaviour publicclassOdinTest:SerializedMonoBehaviour{[DictionaryDrawerSettings]publicDictionary<string,float>StudentDict=newDictionary<string,float>();} ...
Unity 无法序列化Dictionary类型,无法将其显示在inspector中。一个Workaround是将Dictionary的Key和Value拆到两个list中,list可以在Inspector中显示。利用API:ISerializationCallbackReceiver (https://docs.unity3d.com/ScriptReference/ISerializationCallbackReceiver.html 有示例代码)可以在序列化/反序列化时将Dictoio...
直接继承以下的类就可以在Inspector显示Dictionary,但是Odin官方建议,由于Odin的序列化实现是将Unity不序列化的所有数据转换为Unity可以理解的数据存储格式以及Object List,然后Unity将转换后的数据与其他支持序列化的数据一起序列化,这意味着用Odin序列化会比Unity的序列化慢 ...