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