Inventory-System

Overview - Video

The video linked below gives an overview of the Inventory System. It shows a Unity Scene where the InventoryDisplay and 2 Buttons to add items have also been added to the Canvas. Clicking the buttons adds items to the InventoryDisplay panel's slots. Clicking on a slot that has an item, removes the item, and the console displays a message saying the item has been used. Then the video shows the UML class diagram of classes

Download, Install Inventory-System Code in Unity Package

Download: The code for these classes is included in the Inventory System Code package. Disabled: Download Link: Inventory System Code Unity Package - V1 updated 4/3/2020

Download Link: Inventory System - v2 - Unity Package updated 4/11/2020

IMPORTANT: Importing this package will overwrite all of the existing files listed below, you will need to fix some minor issues detailed in the section below.

The above Unity package includes: the ScriptableObject Factory Package: ScriptableObject Factory - box.com

** See Links at bottom of this page for the tutorials, acknowledgements for this Inventory systems used to derive this customized Inventory system.

Updated Apr 3,2020

The Inventory System uses the following Classes:

ScriptableObject Classes - Data-Model

  • abstract class Item: ScriptableObject

  • class ItemInstance: ScriptableObject

  • class Inventory: ScriptableObject

  • classes for custom Items:

    • class Gem: Item

    • class Potion: Item

MonoBehaviour Classes: Display - UI - View

  • class InventoryDisplay: MonoBehaviour

  • class Slot: MonoBehaviour, IPointerClickHandler

Other MonoBehaviour Required Files:

  • class Hazard: MonoBehaviour

Modified, Existing files:

  • GameData: MonoBehaviour

  • PickUp: MonoBehaviour

Manual file modification required to integrate Inventory with MiniGame Logic PlayerController.cs - Update code to integrate having Pickup items added to inventory Pickup Prefabs - will need to be reconfigured

Fix Unity Errors due to changes in GameData, PlayerController, PickUp classes.

Important: several changes are required to re-configure GameObjects in BeginScene, MiniGameScene, and Asset Prefabs: PickUp.

  • Step 1: BeginScene - GameData issues:

    • In BeginScene, make sure the GameManager gameObject has no errors on the GameData.cs script component. (fix: Remove component, re-add)

    • Create an Inventory ScriptableObject: named: GameInventory. ( no additional configuration needed for GameInventory scriptableObject )

    • Add GameInventory scriptableObject to the GameData.cs component on GameManager.

  • Step 2: MiniGameScene - PlayerController issues

    • In the MiniGame, Select the Player gameObject, Update the PlayerController script using linked code. Compile. Fix any errors. (fix: Remove component, re-add)

    • If necessary: - Reset GroundCheck by selecting the GroundCheck empty gameObject.

    • If necessary, reconfigure PlayerController.cs on the Inspector Select: LayerMask: Set to: Ground

  • Step 3: MiniGame-Prefab Asset: PickUp issues:

  • Edit your PickUp Prefabs

    • Edit the PickUp prefabs, (Unity 2018 + - edits can be done in the directly in prefab editor ) following the details blow.

    • For Prefabs with 'Collectible Tag': make sure the PickUp script component shows no errors. (fix: Remove component, re-add ).

    • And an ItemInstance scriptableObject to the each prefab's PickUp script.

      • Create a scriptableObject from the Gem or Potion class and set all values, sprites.

      • Add the scriptableObject to the PickUp's Item field as shown in images below.

To Configure: Inventory Display: Go to linked page below

InventoryDisplay: UI Prefabs: Slot, Store, BtnAdd-Item, Optional: Add Animation

Acknowledgements: Inventory Systems: Reference Tutorials

Below are links to several tutorials about custom Unity Inventory-Systems using ScriptableObjects which were integrated and customized for creation of the Inventory System in this course..

Last updated