(相关资料图)

需求:

ScriptableObject可以保存Dictionary类型的数据

检视面板可以展示Dictionary类型的数据

可序列化的Dictionary支持复杂嵌套

问题:

Unity无法序列化Dictionary类型的数据,而ScriptableObject只能保存可序列化的数据,导致ScriptableObject无法使用Dictionary类型,并且检视面板无法显示Dcitionary类型的数据

思路:

重写Dictionary类,再通过PropertyDrawer自定义可序列化的Dictionary的显示方式

缺陷:

检视面板不支持对Dictionary的key进行更改,不支持新增和删除key,但可以修改value的内容,如果有需求,可自行更改PropertyDrawer中的代码,增加新增和删除key的按钮。由于数据类型不确定,处理新增会是一个麻烦的事情,还是建议只能通过代码新增和删除key。

效果图:

代码:

使用方法:

定义变量:

展示变量:

推荐内容