Basically a serialized functionality with an additions. With minimal scripting, you can add some useful inspector buttons to automatically fill the dictionary. Very useful for large dictionaries like item database.

using CupkekGames.Core;
using CupkekGames.Luna;
using UnityEngine;
namespace CupkekGames.HeroManager
{
public class ItemDatabaseIngredient : KeyValueDatabaseMonoSO<string, IngredientSO>
{
public InventoryItemDefinition GetItemDefinition(string key)
{
if (string.IsNullOrEmpty(key))
{
Debug.Log("Null key");
return null;
}
if (!ContainsKey(key))
{
Debug.Log("Ingredient doesnt exist: " + key);
return null;
}
return GetValue(key).ItemDefinition;
}
}
}#if UNITY_EDITOR
using CupkekGames.Core.Editor;
using UnityEditor;
namespace CupkekGames.HeroManager.Editor
{
[CustomEditor(typeof(ItemDatabaseIngredient))]
public class ItemDatabaseIngredientEditor : KeyValueDatabaseMonoSOEditor<string, IngredientSO>
{
public override string GetKeyFromFileName(string name)
{
return name;
}
}
}
#endifSettings
Theme
Light
Contrast
Material
Dark
Dim
Material Dark
System
Sidebar(Light & Contrast only)
Font Family
DM Sans
Wix
Inclusive Sans
AR One Sans
Direction