using System; using System.Collections.Generic; namespace UnityEngine.Recorder { [Serializable] class SerializedDictionary<TKey, TValue> : ISerializationCallbackReceiver { [SerializeField] List<TKey> m_Keys = new List<TKey>(); [SerializeField] List<TValue> m_Values = new List<TValue>(); readonly Dictionary<TKey, TValue> m_Dictionary = new Dictionary<TKey, TValue>(); public Dictionary<TKey, TValue> dictionary { get { return m_Dictionary; } } public void OnBeforeSerialize() { m_Keys.Clear(); m_Values.Clear(); foreach (var keyPair in m_Dictionary) { m_Keys.Add(keyPair.Key); m_Values.Add(keyPair.Value); } } public void OnAfterDeserialize() { m_Dictionary.Clear(); for (int i = 0; i < m_Keys.Count; ++i) m_Dictionary.Add(m_Keys[i], m_Values[i]); } } }