using UnityEngine; using System.Collections.Generic; [System.Serializable] public class ObjectKvp : UnityNameValuePair { public Object value = null; override public Object Value { get { return this.value; } set { this.value = value; } } public ObjectKvp(string key, Object value) : base(key, value) { } } [System.Serializable] public class ObjectDictionary : UnityDictionary { public List values; override protected List> KeyValuePairs { get { return values.ConvertAll>(new System.Converter>( x => { return x as UnityKeyValuePair; })); } set { if (value == null) { values = new List(); return; } values = value.ConvertAll(new System.Converter, ObjectKvp>( x => { return new ObjectKvp(x.Key, x.Value as Object); })); } } override protected void SetKeyValuePair(string k, Object v) { var index = values.FindIndex(x => { return x.Key == k;}); if (index != -1) { if (v == null) { values.RemoveAt(index); return; } values[index] = new ObjectKvp(k, v); return; } values.Add(new ObjectKvp(k, v)); } }