using System; using System.Collections.Generic; using UnityEngine; [Serializable] public class SerializableDictionary : Dictionary, ISerializationCallbackReceiver { [SerializeField] private List keys = new List(); [SerializeField] private List values = new List(); public void OnBeforeSerialize() { keys.Clear(); values.Clear(); foreach (var pair in this) { keys.Add(pair.Key); values.Add(pair.Value); } } public void OnAfterDeserialize() { Clear(); if (keys.Count != values.Count) throw new Exception("Key and value count mismatch!"); for (int i = 0; i < keys.Count; i++) { Add(keys[i], values[i]); } } }