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");
}

'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