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");
}
'Unity > 코드 예제들' 카테고리의 다른 글
캐릭터 경사면에 서 있는상태 체크(미끄러질수있는 곳) (0) | 2021.12.20 |
---|---|
GUI textField 폰트 크기 조정. (0) | 2021.07.06 |
글로벌용 글자 좌표 수정 (0) | 2021.05.04 |
타일맵 (0) | 2021.04.02 |
com.unity.localization (0) | 2021.03.15 |