Skip to content

Understanding inventory system

Nate River edited this page Nov 14, 2022 · 20 revisions

Item class is item definition, a logical object that is unique to your game. Usually, Item has Id and Count. Player's items may be stored as a part of a player's profile in PlayerPrefs. Trader's items may be constant ("hard-coded") or generated at runtime based on player's progress.

ItemParams class is item description. It may contain information about items that is unique for your game, like type, weight, price, attributes and other. A full list of all item parameters is some kind of item database and is usually constant (stored in game resources).

ItemCollection is a scriptable object stored in Redources that contains a list of ItemParams. You can use it if you want, or just make your own implementation.

Ok, now we have separate separate Item and ItemParams classes. Knowing an item's ID we can find its' params at any time.

While Item and ItemParams are LOGICAL objects, now we want to get some VISUAL things like equip items on characters or implement an inventory system.

SpriteCollection is a list of all sprites available in Hero Editor. It's also a scriptable object. ItemParams class contains SpriteId property. Using it you can find ItemSprite in SpriteCollection.

Nice, now we have following workflow. Knowing Item.Id we can find ItemParams. Knowng ItemParams.SpriteId we can find ItemSprite in SpriteCollection. Then we can can equip it on a character.

IconCollection is a list of all icons available in Hero Editor. Icons are usually used in inventory systems. Please note, that sprites from SpriteCollection may be associated with multiple icons. For example, an armor sprite (atlas) has helmet, vest, bracers and leggings icons. ItemParams class contains IconId property. Using it you can find ItemIcon in IconCollection.

Finally, our workflow is

  1. Define all ItemParams in ItemCollection scriptable object that is stored in Resources. You can use any external sources like Google Sheets, for example.
  2. Define player's profile and add a new property List<Item> Items, it's a list of items that a player owns.
  3. Knowing Item.Id find ItemParams in ItemCollection
  4. Knowing ItemParams.SpriteId find ItemSprite in SpriteCollection
  5. Knowing ItemParams.IconId find ItemIcon in IconCollection
Clone this wiki locally