(相关资料图)
需求:
ScriptableObject可以保存Dictionary类型的数据
检视面板可以展示Dictionary类型的数据
可序列化的Dictionary支持复杂嵌套
问题:
Unity无法序列化Dictionary类型的数据,而ScriptableObject只能保存可序列化的数据,导致ScriptableObject无法使用Dictionary类型,并且检视面板无法显示Dcitionary类型的数据
思路:
重写Dictionary类,再通过PropertyDrawer自定义可序列化的Dictionary的显示方式
缺陷:
检视面板不支持对Dictionary的key进行更改,不支持新增和删除key,但可以修改value的内容,如果有需求,可自行更改PropertyDrawer中的代码,增加新增和删除key的按钮。由于数据类型不确定,处理新增会是一个麻烦的事情,还是建议只能通过代码新增和删除key。
效果图:
代码:
使用方法:
定义变量:
展示变量: