Si game developer a snívaš o hre, kde hráči nadšene zbierajú loot, organizujú si výbavu a cítia sa ako pravý hrdina? 😎 Inventárny systém je srdcom každej RPG alebo akčnej adventúry. V tomto sprievodcu ti ukážem, ako ho vytvoriť od nuly v Unity – jednoducho, efektívne a s wow efektom. Bez zbytočností, len čistá akcia! Priprav si editor a poďme na to! ⭐
1. ☝️ Plánovanie Štruktúry Dát – Základ Úspechu
Pred kódovaním si navrhni dáta. Každý item potrebuje ID, názov, ikonu, množstvo a raritu. Použi ScriptableObject pre items – sú rýchle a editovateľné v inspektore.
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject {
public string itemName;
public Sprite icon;
public int maxStack = 99;
public ItemRarity rarity;
}
Vytvor Inventory class ako List<InventorySlot>. Každý slot drží Item a množstvo. Toto ti umožní dynamicky pridávať itemy bez hardcoded vecí. Super flexibilné pre budú expenzie! 🎮
2. 🎨 Vytvorenie UI Inventára – Vizualny Boom
Otvori Canvas, pridaj Grid Layout Group pre slots. Každý slot je Button s Image pre ikonu a Text pre množstvo. Pridaj ScrollView pre veľký inventár – hráči to milujú!
| Komponent |
Funkcia |
Tip pre Optimalizáciu |
| Grid Layout Group |
Automatické usporiadanie slotov |
Padding 5px, cell size 64x64 |
| Image (Mask) |
Ikona itemu |
Preserve Aspect pre sharp vzhľad |
| TextMeshPro |
Množstvo (napr. "x5") |
Font size 20, corner pre stack count |
Takto máš prehľadný inventárny systém ako v WoW alebo Diablo. Hráči sa nebudú strácať! 😊
3. 🔧 Logika Pridávania a Odoberania Itemov
Vytvor InventoryManager singleton. Metóda AddItem(Item item, int amount):
- 1️⃣ Skontroluj existujúci slot s rovnakým itemom.
- 2️⃣ Ak áno, pridaj množstvo (ak nie je full stack).
- 3️⃣ Inak vytvor nový slot.
- 4️⃣ Aktualizuj UI – InventoryUI.Refresh().
public bool AddItem(Item item, int amount) {
foreach (var slot in inventory) {
if (slot.item == item && slot.amount < item.maxstack)="" {="" slot.amount="" +="amount;" updateui();="" return="" true;="" }="" }="" pridaj="" nový="" slot...="" return="" true;="" }="">
Pre RemoveItem podobná logika. Toto je jadro tvojho inventárneho systému – rýchle a bez chýb!
4. 🖱️ Drag & Drop – Interaktivita na Steroidoch
Implementuj IDragHandler, IBeginDragHandler atď. z UnityEventSystem. Keď hráč potiahne item, vizuálne ho sleduj pointer. Drop na iný slot = swap alebo merge stacks.
Kľúčový tip: Použi CanvasGroup pre dragovaný item (blocksRaycasts = false). Hráči budú závislí od tejto fluidity! 👏
public void OnDrag(PointerEventData eventData) {
dragImage.transform.position = Input.mousePosition;
dragImage.enabled = true;
}
Ak chceš pokročilé, pridaj tooltips pri hover – zobraz stats itemu. Epické!
5. 💾 Ukladanie a Načítavanie – Perzistencia Dát
Použi JsonUtility alebo PlayerPrefs pre jednoduchosť. Serialize List slotov do JSON a ulož do PlayerPrefs.
string json = JsonUtility.ToJson(inventory);
PlayerPrefs.SetString("InventorySave", json);
Na load: Parse a refresh UI. Pre multiplayer? WebGL WebRequest alebo Photon. Tvoj inventárny systém prežije reload! 🛡️
Viac detailov nájdeš v Unity Docs.
⚡ Pokročilé Tippy pre Pro Level
- ⭐ Filtre: Zobraziť len zbrane? Pridaj Toggle buttons.
- ⭐ Equip systém: Slots pre weapon, armor – link na Player stats.
- ⭐ Animácie: Tween ikony pri add (DOTween library).
- ❌ Vyhnite sa: Fixed array slots – použi dynamic List.
S týmito krokmi máš plne funkčný inventárny systém, ktorý ohúri testerov. Testuj s rôznymi itemami, optimalizuj pre mobile (touch drag). Čo ďalej? Pridaj crafting! Pokračuj v čítaní mojich ďalších tutoriálov o AI nepriateľoch. Tvoja hra bude hit! 🎉
Chceš kód balíček? Napíš v komentároch!