Inspector in Dictionary Serialize
Inspector에서 데이터를 확인하면 굉장히 편하게 확인이 가능하다.
Dictionary타입은 원소 타입이 아니기 때문에 Serialize 하지 않아서 inspector에 노출이 되지 않는데
ISerializationCallbackReceiver를 사용하면 Serialize Field Type으로 수정해서 노출이 가능하다.
반응형
<SerializableDictionary.cs>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.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 (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 SerializeDicString : SerializableDictionary<string, string>
{
}
public SerializeDicString item = new SerializeDicString();
Unity Script Serialzie : [Doc]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity)2D 개발 꿀 팁 (Unity 공식) (0) | 2021.03.22 |
---|---|
Unity) JsonUtility class Parsing Problem (0) | 2021.03.18 |
Unity ) 스크립팅이 가능한 오브젝트 (ScriptableObject) (0) | 2021.02.26 |
Unity)Bolt - 볼트 비쥬얼 스크립팅 (2) | 2021.02.23 |
문제해결)Unity) Visual Studio Debugging Freezing 관련 버그 (2) | 2021.02.22 |
댓글