using System.Collections.Generic; using UnityEngine; [System.Serializable] public abstract class UnitySerializedDictionary : Dictionary, ISerializationCallbackReceiver { [SerializeField, HideInInspector] private List keyData = new List(); [SerializeField, HideInInspector] private List valueData = new List(); void ISerializationCallbackReceiver.OnAfterDeserialize() { this.Clear(); for (int i = 0; i < this.keyData.Count && i < this.valueData.Count; i++) { this[this.keyData[i]] = this.valueData[i]; } } void ISerializationCallbackReceiver.OnBeforeSerialize() { this.keyData.Clear(); this.valueData.Clear(); foreach (var item in this) { this.keyData.Add(item.Key); this.valueData.Add(item.Value); } } }