직렬화된 딕셔너리 만든다음에 인스펙터 창에서 리스트추가하려고 하면 ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index 에러가 뜬다...


[Serializable]
public class SerializableDictionary<TKey, TValue> :Dictionary<TKey, TValue>, ISerializationCallbackReceiver
{
[SerializeField]
private List<TKey> keys = new List<TKey>();

[SerializeField]
private List<TValue> values = new List<TValue>();

// save the dictionary to lists
public void OnBeforeSerialize()
{
keys.Clear();
values.Clear();

foreach (var kvp in this)
{
keys.Add(kvp.Key);
values.Add(kvp.Value);
}
}

// load dictionary from lists
public void OnAfterDeserialize()
{
this.Clear();
for( int i = 0; i < keys.Count(); i++ )
{
Debug.Log(i);
Debug.Log(this.Count());
this.Add( keys[i], values[i] );
}
}
}

(작성한 코드)


문제가 되는 부분은 OnAfterDeserialize()