Editor Window
Use the Main Manager to select an Inventory System Database and edit the Scriptable Objects referenced by it. Start with the data model, then add runtime UI: categories declare the structure, definitions describe each Item type, attributes supply values, and the remaining editors add Currency, crafting, UI, or bulk data workflows.
Each manager page documents the less-visible controls owned by that feature, including row context menus, Attribute cog and removal choices, UI Designer target selection, and database actions.
Editor Options by Feature is a compact route to those owning guides; it does not duplicate their option descriptions.
Open the database editors
- Open Tools > Opsive > Ultimate Inventory System > Main Manager.
- In Setup, select the project Inventory System Database.
- Open the editor for the object type you want to create or review.
- Confirm that the database shown by the Main Manager is the intended project database before making changes.
Objects created in these editors are saved as Scriptable Objects and referenced by the selected database. Related objects also retain their relationships, such as an Item Definition’s Item Category or a Crafting Recipe’s Crafting Category.
The editor keeps Uncategorized Item and Crafting Categories as safe defaults. A new Item Definition or Crafting Recipe uses the corresponding Uncategorized category until a project category is assigned.
Follow the recommended route
- In Item Category, create All > Consumable and All > Equippable > Weapon. Decide mutability and uniqueness before creating many definitions.
- In Item Definition, create Health Potion under Consumable and Iron Sword plus Fire Wand under Weapon.
- In Attributes, confirm the inherited sources and values for
Icon,Description,Attack,Durability, andBuyPrice. Attribute declarations themselves are added from the Item Category editor. - In Currency, create Gold and set the icon and any amount or conversion rules the project needs.
- In Crafting Category, organize recipes and choose the recipe type. Then use Crafting Recipe to create one simple recipe with existing definitions as inputs and Health Potion as the output.
- After the database is usable, open UI Designer, create the Canvas Managers, duplicate a schema, and spawn the starting UI. Connect a Bag Inventory Grid and Equipment Item Slot Collection View to the player Inventory.
- Use Import and Export only for supported bulk edits or readable tables. It modifies an existing database, does not include every Unity object or custom value, and is not a backup system.
This order keeps the UI and runtime objects connected to stable database content instead of temporary Uncategorized entries.
Choose an editor by task
Choose the editor that owns the task:
| User task | Editor | Expected result |
|---|---|---|
| Organize definitions, declare attributes, and choose mutable, unique, or abstract behavior | Item Category | A clear category hierarchy such as All > Equippable > Weapon |
| Create an Item template and set its Category, parent Definition, definition values, and Default Item values | Item Definition | Health Potion, Iron Sword, and Fire Wand definitions with the expected inherited fields |
| Inspect attribute source, inherited value, type, and Variant | Attributes | Each field resolves from the intended Category, Definition, Default Item, or Item |
| Define money and optional conversion relationships | Currency | Gold is available to Currency Owners, shops, and price values |
| Organize recipes and select their processing type | Crafting Category | Recipes share the intended type and category relationships |
| Set recipe inputs, outputs, and custom fields | Crafting Recipe | The visual recipe summary matches the intended Health Potion recipe |
| Generate, find, and edit Inventory UI | UI Designer | The selected schema produces working Bag and Equipment panels |
| Move supported database fields through CSV or another module | Import and Export | Existing objects are added or updated without treating the export as a full backup |
Open the linked feature page before using controls that appear only after right-clicking a row, opening a cog, or selecting a list entry; their consequences are documented with the affected data.
Add and find database objects
Each object editor has a list and a selected-object panel. Enter a unique name beside Add to create an object, select it in the list, then edit its properties, attributes, or relationships.

Use search before creating a similarly named object. The available tokens depend on the current editor:
c:<CategoryName>finds Item Categories with that direct parent, or filters Definitions and Recipes by Category where supported.i:<CategoryName>finds Item Categories that inherit from that ancestor.a:<AttributeName>finds Categories or Definitions containing that attribute where supported.
The search bar also includes sorting and a filter-preset field. To save a frequent search, choose or enter the search, select the preset object field beside the search bar, and use + to create a Searchable List Filter Preset. The editor restores the saved preset when the window opens.

Remove objects carefully
Database objects are related, so inspect the Relationships view before deleting one.
- Removing an Item Category breaks its direct child links. Available parents can be reconnected to the children, and directly assigned Item Definitions are moved to a suitable related Category or Uncategorized. At runtime, Definitions and Items belonging to the removed Category are unregistered.
- Removing an Item Definition reparents child Definitions to the removed Definition’s parent when one exists. At runtime, Items belonging to that Definition are unregistered.
- Removing a runtime Item does not require Category or Definition cleanup. An Item Object can notify dependent MonoBehaviours before the Item is removed so they can release related state.
Use version control for recoverability. The Import and Export editor is intentionally incomplete and should not be used as a database backup.
Editor checkpoints
Before building runtime scenes or UI, confirm that:
- The Main Manager references the intended Inventory System Database.
- All, Consumable, Equippable, and Weapon have the intended parent relationships.
- Health Potion uses Consumable; Iron Sword and Fire Wand use Weapon rather than Uncategorized.
Icon,Description, andBuyPriceresolve for all three definitions, while weapon-only fields appear only on the Weapon branch.- Gold exists and every configured price references the intended Currency.
- The sample Crafting Recipe uses the intended Crafting Category, inputs, output, and recipe type.
- The UI Designer schema is duplicated into project-owned assets before its prefabs are customized.
Verify the next runtime workflow
- Enter Play Mode and open the player Inventory.
- Confirm that Health Potion, Iron Sword, and Fire Wand appear in Bag with their expected icons and descriptions.
- Equip Iron Sword and confirm that it moves to Equipment and uses its intended runtime values.
- Open the shop and confirm that the displayed Gold price matches the definition’s
BuyPriceused by the transaction. - Process the sample recipe and confirm that it consumes the configured inputs and adds Health Potion to the Inventory.
If one of these checks fails, return to the editor that owns that relationship or value rather than changing the generated UI first.
Create an advanced search preset
For a filter that cannot be expressed with the built-in tokens, create a Scriptable Object that inherits SearchableListFilterPreset and override IsValid:
/// <summary>
/// An object used to create filter and sort presets for searchable lists.
/// </summary>
public class SearchableListFilterPreset : ScriptableObject
{
[Tooltip("The default search string.")]
[SerializeField] protected string m_SearchString;
[Tooltip("The default sort option, indicated by index.")]
[SerializeField] protected int m_SortOptionIndex;
public string SearchString {
get => m_SearchString;
set => m_SearchString = value;
}
public int SortOptionIndex {
get => m_SortOptionIndex;
set => m_SortOptionIndex = value;
}
/// <summary>
/// Returns whether the object passes this custom filter.
/// String matching is performed separately.
/// </summary>
public virtual bool IsValid(object obj)
{
return true;
}
}
The preset can combine its custom object test with the saved search string and sort option.