Stel je voor: je speler verzamelt schatten, wapens en potions, maar alles raakt hopeloos door elkaar. ๐ฉ Een solide inventaris systeem verandert dat in een soepele ervaring die game-thuizen verslaaft! Of je nu een RPG, survival of adventure bouwt, dit systeem is de ruggengraat van je gameplay. In deze gids leiden we je stap voor stap door het bouwen van een inventaris systeem in Unity โ met code, UI en tips voor topprestaties. Laten we direct aan de slag gaan! ๐
1๏ธโฃ Stap 1: Plan Je Items En Data Structuur
Voordat je codeert, ontwerp je inventaris systeem. Definieer item-types: wapens, armor, consumables. Elke item heeft eigenschappen zoals naam, icoon, stackgrootte en stats.
Gebruik een ScriptableObject voor items โ super efficiรซnt in Unity!
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject {
public string itemName;
public Sprite icon;
public bool isStackable;
public int maxStackSize;
public int value;
}
Kies de juiste data structuur voor je inventory. Hier een handige vergelijking:
| Structuur |
Voordelen |
Nadelen |
Ideaal Voor |
| Array |
Snel, vast formaat |
Niet flexibel, geen resizing |
Vaste slots (bijv. hotbar) |
| List<Item> |
Dynamisch, makkelijk toevoegen/verwijderen |
Enigszins trager dan array |
Hoofd-inventory |
| Dictionary<int, Item> |
Snel opzoeken via ID |
Geen duplicates, complexer |
Snelle item-checks |
Tip voor game-thuizen: Begin met een List voor flexibiliteit โ upgrade later naar Dictionary voor grote inventories. โญ
2๏ธโฃ Stap 2: Bouw De Inventory Manager
Creรซer een InventoryManager singleton die alles beheert. Hang dit aan een GameObject.
public class InventoryManager : MonoBehaviour {
public static InventoryManager instance;
public List<InventorySlot> slots = new List<InventorySlot>();
void Awake() {
instance = this;
}
public bool AddItem(Item item) {
// Zoek lege slot of stackbare
foreach (var slot in slots) {
if (slot.isEmpty || (slot.item.isStackable && slot.amount < slot.item.maxstacksize))="" {="" slot.additem(item);="" return="" true;="" }="" }="" return="" false;="" inventory="" vol!="" }="" }="">
Maak een InventorySlot class voor elke slot:
[System.Serializable]
public class InventorySlot {
public Item item;
public int amount;
public bool isEmpty { get { return item == null; } }
public void AddItem(Item newItem) { /* logica */ }
}
Voeg items toe via knoppen of pickups: InventoryManager.instance.AddItem(myItem);. Simpel, maar krachtig! ๐
3๏ธโฃ Stap 3: Creรซer Een Gebruiksvriendelijke UI
UI is waar magie gebeurt. Gebruik Unity's Canvas met Grid Layout Group voor slots.
- Maak een Panel met Grid (Cell Size: 80x80).
- Voeg prefab Slots toe: Image (background), Image (icon), Text (amount).
- Link slots aan InventoryManager.
Voor drag & drop: Implementeer IDragHandler en IDropHandler uit UnityEngine.EventSystems.
public class DragDropSlot : MonoBehaviour, IDragHandler, IDropHandler {
public void OnDrag(PointerEventData eventData) { /* drag logica */ }
public void OnDrop(PointerEventData eventData) { /* swap items */ }
}
Maak het visueel aantrekkend: animaties voor open/sluit met DOTween, tooltips voor item-info. Game-thuizen houden van intuรฏtieve controls! ๐
4๏ธโฃ Stap 4: Sla En Laad Je Inventory Op
Geen game zonder save/load! Gebruik JsonUtility of PlayerPrefs voor simplicity.
public void SaveInventory() {
string json = JsonUtility.ToJson(this);
PlayerPrefs.SetString("Inventory", json);
}
public void LoadInventory() {
string json = PlayerPrefs.GetString("Inventory");
JsonUtility.FromJsonOverwrite(json, this);
}
Voor cloud saves, check Unity's Cloud Save โ super modern en schaalbaar.
5๏ธโฃ Stap 5: Optimalisaties En Geavanceerde Features
Maak je inventaris systeem next-level:
- Filters: Tabs voor wapens, potions โ gebruik ToggleGroups.
- Sorting: Sorteer op waarde of type met LINQ.
- Weight Limits: Voeg totaalgewicht toe om overbelasting te voorkomen.
- Multiplayer Sync: Gebruik Mirror of Photon voor online games.
Performance tip: Pool slots met Object Pooling om garbage collection te minimaliseren. Je FPS blijft hoog, zelfs met 100+ items!
Volgende Stappen: Test En Uitbreiden
Test je inventaris systeem in een prototype: voeg items toe, drop ze, stack ze. Fix edge cases zoals full inventory of corrupte saves. Klaar? Integreer met crafting of trading!
Wil je diepere code of assets? Download gratis Unity Asset Store packs voor inventory systems en bouw erop door. Jouw game wordt episch โ deel je resultaten in de comments! ๐
Klaar om te coderen? Start nu en voel de voldoening van een perfect werkend systeem. Succes, game-maker! ๐