The Inventory System package was heavily refactored in the 1.5.x architecture shift.
It now follows a more modular runtime layout and is designed to work well with the Data package and CatalogKey-driven authoring patterns.
IInventoryItemDatabase)UI and inventory code take IInventoryItemDatabase (lookup definitions, icons, CreateItem, etc.). Resolve it with ServiceLocator.Get<IInventoryItemDatabase>() after registration.
Default implementation: InventoryItemDatabaseSO — a ScriptableObject that reads item definitions from IAssetCatalog<InventoryItemDefinitionSO> / ICatalog registered under the items provider id (same pattern as samples). Use the asset as-is, subclass it, or provide your own IInventoryItemDatabase and register that instance against the interface.
The old InventoryItemDatabase type name is removed; migrate your ItemDatabase (or similar) to InventoryItemDatabaseSO or IInventoryItemDatabase.
InventoryItemDefinitionSO)Definitions are always DataSO<InventoryItemDefinition> via InventoryItemDefinitionSO. There is no InventoryItemDefinitionSO<T>—catalogs and samples expect that concrete SO type.
class EquipmentSO : InventoryItemDefinitionSO { } with [CreateAssetMenu(...)].EquipableFeature (and related RPG bridge features) on InventoryItemDefinition.Features, instead of a parallel generic definition type on the SO.CatalogKey) while still showing rich inspector previews.Inventory tooltips no longer call a virtual like GetItemStatDisplayLines on definitions. The slot tooltip builder calls InventoryItem.BuildItemTooltipStats, which loops InventoryItemDefinition.Features and, for each IItemFeature, calls BuildTooltipContent(VisualElement host, in ItemTooltipContext context).
Migrate custom stat/ingredient lines by implementing IItemFeature (plus IFeature.CloneFeature), add an instance to the item definition’s Features list, and build VisualElement children on the host (see ItemTierFeature for a small example, EquipableFeature for RPG stat text). Use ItemTooltipContext for IInventoryItemDatabase, optional attribute-name filtering, and equipment comparison via GetComparison.
Note:
InventoryItemDefinition.Featuresis typed asList<IFeature>(the base interface). If your project has otherIFeaturesub-interfaces (e.g. unit feature definitions), the Inspector dropdown will show all types. To restrict the dropdown to inventory features only, change the list type toList<IItemFeature>and register a[CustomPropertyDrawer(typeof(IItemFeature), true)]that scans only forIItemFeaturetypes. See Sub-interface type filtering for the full pattern.
ItemTierFeature tooltips resolve the tier line through IValueCatalog registered under InventoryConstants.ItemTierCatalogId (GetDisplayValue on the effective CatalogKey, fallback to the raw key). Slot USS on the Background button adds a slug derived from that display when available (e.g. common from Common), otherwise from the key (e.g. 0 stays 0). Style tier chrome in USS against those slugs; ClearSlotVisual removes slugs and legacy raw-key classes for all keys listed in the tier ICatalog.
Runtime/Item/Core: definitions, references, item databasesRuntime/Item/Features: feature modules (compose behavior)Runtime/Item/Slot: slot controllers, visuals, tooltip buildersRuntime/UI: inventory/equipment UI controllers and viewsRuntime/ItemStats: stat line data and controllers (UI-friendly formatting)Data.DropTable/Runtime: weighted drop sources and roll helpers — see Drop TableSettings
Theme
Light
Contrast
Material
Dark
Dim
Material Dark
System
Sidebar(Light & Contrast only)
Font Family
DM Sans
Wix
Inclusive Sans
AR One Sans
Direction