Files
VOIDRPG/Assets/90 - Scripts/Generic/SerializedDictionary.cs
T
2026-07-09 21:33:33 +02:00

37 lines
980 B
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace VOID.Generic
{
[Serializable]
public abstract class SerializedDictionary<TKey, TValue> : Dictionary<TKey, TValue>, ISerializationCallbackReceiver
{
[SerializeField, HideInInspector]
private List<TKey> keyData = new();
[SerializeField, HideInInspector]
private List<TValue> valueData = new();
void ISerializationCallbackReceiver.OnAfterDeserialize()
{
Clear();
for (var i = 0; i < keyData.Count && i < valueData.Count; i++)
{
this[keyData[i]] = valueData[i];
}
}
void ISerializationCallbackReceiver.OnBeforeSerialize()
{
keyData.Clear();
valueData.Clear();
foreach (var item in this)
{
keyData.Add(item.Key);
valueData.Add(item.Value);
}
}
}
}