simple-code
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 (KeyValuePair<TKey, TValue> pair in this)
{
keys.Add(pair.Key); values.Add(pair.Value);
}
}
//load dictionary from lists
public void OnAfterDeserialize()
{
this.Clear();
if (keys.Count != values.Count)
throw new System.Exception(string.Format("there are {0} keys and {1} values after deserialization. Make sure that both key and value types are serializable."));
for(int i=0; i<keys.Count; i++)
{
this.Add(keys[i], values[i]);
}
}
}
[System.Serializable]
public class SerialDicString : SerializableDictionary<string, string>{
}
public SerialDicString item = new SerialDicString();
- 만약 json data를 직렬화 할일이 있으면 string으로 변조 하였다가 다시 복조하는 방법이 쉬울듯함
- 위 방법을 사용하면 inspector에서 표시할수 있는 직렬화 데이터를 만들 수 있음