using System; using System.Collections.Generic; using UnityEngine; namespace Unity.Multiplayer.Editor { [Serializable] internal class SerializedDictionary : SortedDictionary, ISerializationCallbackReceiver { [SerializeField] List m_Keys = new List(); [SerializeField] List m_Values = new List(); public SerializedDictionary() {} public SerializedDictionary(Comparer comparer) : base(comparer) {} public void OnBeforeSerialize() { m_Keys.Clear(); m_Values.Clear(); foreach (var kvp in this) { m_Keys.Add(kvp.Key); m_Values.Add(kvp.Value); } } public void OnAfterDeserialize() { this.Clear(); for (int i = 0; i < m_Keys.Count; i++) this[m_Keys[i]] = m_Values[i]; m_Keys.Clear(); m_Values.Clear(); } } }