前言,在Unity开发中,一些挂在物体上的脚本公开的成员变量,可通过inspector面板更改对应的值,但并不是所有公开成员的值,都可以通过inspector面板进行填写,而且有些数值即使填写,也保存不了(无法序列化),例如:Dictionary<Tkey,TValue>。但是Odin为我们提供了一套解决这种情况的序列化方案。
如下图所示,keyValuePairs_0成员和keyValuePairs_1成员都无法进行有效的序列化,虽然keyValuePairs_1通过特性ShowInInspector强制显示出对应的Dictionary,也可以填写,但是在运行时,填写的数据会丢失。
public class ExampleUnitySerializedScript : MonoBehaviour
{
public Dictionary<int, string> keyValuePairs_0 = new Dictionary<int,