Inventory-System
Last updated
Last updated
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: 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
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.
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..
Michael Palmos: Inventory System - Blog This inventory system is based on this blog series by Michael Palmos.
RPG Inventory-System: - by Jamie at MVCode Clubs