Unity/코드 예제들
ScriptableObject에서 Dictionary 처리 .
소나무꼴
2021. 5. 31. 18:39
ScriptableObject에서 Dictionary 는 저장되지 않아 따로 처리 해주어야 한다.
using System.Collections.Generic;
using UnityEngine;
using System;
[Serializable]
public class SerializeDictionary<K, V> : Dictionary<K, V>, ISerializationCallbackReceiver
{
[SerializeField]
List<K> keys = new List<K>();
[SerializeField]
List<V> values = new List<V>();
public void OnBeforeSerialize()
{
keys.Clear();
values.Clear();
foreach (KeyValuePair<K, V> pair in this)
{
keys.Add(pair.Key);
values.Add(pair.Value);
}
}
public void OnAfterDeserialize()
{
this.Clear();
for (int i = 0, icount = keys.Count; i < icount; ++i)
{
this.Add(keys[i], values[i]);
}
}
}
public class SerializeDicString : SerializeDictionary<string, string> { }
public SerializeDicString dicString = new SerializeDicString();
void Test()
{
dicString.Add("aa","bb");
}