Data Catalogs are the bridge between simple serialized data and real runtime/editor values.
Instead of storing direct object references everywhere, you store stable ids:
Catalog)Key)Then the system resolves those ids to actual values through registered catalogs.
You can keep a field like IconKey as two strings, but in inspector it still behaves like asset selection.
That means:
ICatalog - catalog identity + key listingIAssetCatalog / IAssetCatalog<T> - key to value resolutionAssetCatalog<T> - common typed implementationCatalogs are registered via ServiceLocator using catalog id as key:
ServiceLocator.Register(this, typeof(ICatalog), catalogId, append: true);
ServiceLocator.Register(this, typeof(IAssetCatalog), catalogId, append: true);Consumers resolve by key:
var iconCatalogs = ServiceLocator.GetAll<IAssetCatalog>("ItemIcon");This model also supports future external content flows:
The key point is that your gameplay schema stays unchanged because it already stores ids, not hard references.
Settings
Theme
Light
Contrast
Material
Dark
Dim
Material Dark
System
Sidebar(Light & Contrast only)
Font Family
DM Sans
Wix
Inclusive Sans
AR One Sans
Direction