Unity Inspector에 HashSet을 Serialize하고 쓸 수 있게 해줍니다.
Dictionary를 Serialize하고 싶으시면 아래 링크를 참고해주세요
https://blog.naver.com/washble2/222950029589
유니티 SerializeDictionary, Dictionary직렬화
유니티에서는 inspector에 Dictionary가 보이지 않습니다. 이럴 때 유용히 쓰는 것에 SerializeDictiona...
blog.naver.com
전체 코드입니다.
using System;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class SerializeHashSet<T> : HashSet<T>, ISerializationCallbackReceiver
{
[SerializeField] private T[] setData = Array.Empty<T>();
public void OnBeforeSerialize()
{
if (!Application.isPlaying) { return; }
RefreshDataType();
}
public void OnAfterDeserialize()
{
Clear();
for (int i = 0; i < setData.Length; ++i)
{
Add(setData[i]);
}
}
public T[] GetDataType()
{
return setData;
}
public void RefreshDataType()
{
if (this.Count != setData.Length) { setData = new T[this.Count]; }
int num = 0;
foreach (T item in this) { setData[num++] = item; }
}
public SerializeHashSet() { }
public SerializeHashSet(IEnumerable<T> collection) : base(collection) { }
public SerializeHashSet(IEnumerable<T> collection, IEqualityComparer<T> comparer) : base(collection, comparer) { }
public SerializeHashSet(IEqualityComparer<T> comparer) : base(comparer) { }
public SerializeHashSet(int capacity) : base(capacity) { }
public SerializeHashSet(int capacity, IEqualityComparer<T> comparer) : base(capacity, comparer) { }
protected SerializeHashSet(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}
ISerializationCallbackReceiver를 사용하여
- OnBeforSerialize는 HashSet에 값이 들어가기 전에 작동해야할 것을 구현해 줍니다.
- OnAfterDeserialize는 HashSet에 Deserialize한 후 작동해야할 것을 구현해 줍니다.
또한 상속시켜서 필요한 함수들을 추가하여 원하는 기능들을 넣을 수 있습니다.
'Unity' 카테고리의 다른 글
| Unity Codeless IAP 사용 때 소비아이템 자동 구매 확정 문제 해결 (0) | 2026.03.05 |
|---|---|
| Unity TextMeshPro - Text에 Sprite Mask 되게 적용하기 (0) | 2026.02.06 |
| [Unity] Content Size Fitter: Parent has a type of layout group component (0) | 2026.01.30 |
| Unity Sound Clip 간단 설정 및 확장자(BGM, SFX, Dubbing) (0) | 2026.01.26 |
| [Unity] Visual Studio에서 Auto Refresh 끄기 (0) | 2026.01.13 |