Dobrodošli, game developeri i entuzijasti! 😎 Zamislite svoju igru gdje igrači lako upravljaju oružjem, potionima i blagom – bez frustracija, samo čista zabava. Sustav inventara je srce svake dobre RPG, survival ili akcijske igre. U ovom vodiču, naučit ćete kako stvoriti sustav inventara u Unityju, od nule do pro levela. Spremni? Hajde kreiramo nešto nevjerojatno! ⭐
1. Planiranje Vašeg Sustava Inventara: Osnove Dizajna ✅
Prvi korak: odredite tip inventara. Većina igara koristi slot-based inventory (fiksni broj slotova) ili weight-based (težina ograničava). Za početnike, slot-based je najlakši.
| Tip Inventara |
Prednosti |
Nedostaci |
Primjeri Igara |
| Slot-Based |
Jednostavan UI, brzo upravljanje |
Ograničen broj itema |
Minecraft, Diablo |
| Weight-Based |
Fleksibilan, realističan |
Kompleksniji kod |
Skyrim, ARK |
| Stackable |
Ušteda prostora |
Potreban dodatni kod |
Stardew Valley |
1️⃣ Odaberite slot-based s 20 slotova. 2️⃣ Definirajte iteme: ID, ime, ikona, količina. Spremni za kod? Nastavljamo! 👉
2. Kreiranje Itema: ScriptableObjects za Lakše Upravljanje 📦
U Unityju, koristite ScriptableObject za iteme – oni su lagani i mogu se editati u Inspectoru. Kreirajte skriptu Item.cs:
using UnityEngine;
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject {
public string itemName;
public Sprite icon;
public bool isStackable;
public int maxStackSize = 99;
}
Ovo vam omogućuje stvaranje stotina itema bez kompiliranja. Dodajte oružja, oklope – sve što srce igrača želi! 🔥 Hajde sad u inventory manager.
3. Glavni Sustav Inventara: Inventory Manager Sklad 🗄️
Kreirajte Inventory.cs kao Singleton. Koristite List<ItemSlot> za slotove.
public class Inventory : MonoBehaviour {
public static Inventory instance;
public List<ItemSlot> slots = new List<ItemSlot>(20);
void Awake() {
instance = this;
for(int i=0; i<20; i++) slots.Add(new ItemSlot());
}
public bool AddItem(Item item) {
// Pronađi stackable slot ili prazan
foreach(var slot in slots) {
if(slot.item == item && slot.amount < item.maxStackSize) {
slot.amount++;
return true;
}
}
// Dodaj u prazan slot
foreach(var slot in slots) {
if(slot.item == null) {
slot.item = item;
slot.amount = 1;
return true;
}
}
return false; // Pun inventory!
}
}
[System.Serializable]
public class ItemSlot {
public Item item;
public int amount;
}
Savršeno! Sada možete dodavati iteme pozivom Inventory.instance.AddItem(mySword);. Testirajte u Scene – osjetite moć! 💪
4. UI Dizajn: Canvas i Grid Layout za Pro Look 🎨
Za UI, koristite Canvas s Grid Layout Group. Kreirajte prefab Slot: Image za ikonu, Text za količinu, Button za interakciju.
- Kreirajte Canvas > Panel > Grid Layout (6x4 slotova).
- Za svaki slot: Dodajte
SlotUI.cs koji ažurira Image.src = slot.item.icon.
- Povežite s Inventory: OnEnable() refresh sve slotove.
Rezultat? Čist, intuitivan inventar poput u modernim hitovima. Ako želite drag&drop, dodajte Unity EventSystem. Nastavite – sljedeći level vas čeka! 🌟
5. Napredne Funkcije: Stacking, Uklanjanje i Equip 🛡️
Proširite AddItem za stacking. Za uklanjanje:
public void RemoveItem(ItemSlot slot, int amount) {
slot.amount -= amount;
if(slot.amount <= 0) {
slot.item = null;
slot.amount = 0;
}
}
Dodajte Equip sustav: posebni slotovi za oružje, oklop. Koristite enum EquipmentSlot { Weapon, Armor }. Igrači će voljeti ovu dubinu!
💡 Bonus trik: Integrirajte s PlayerController za auto-equip najbližeg oružja. Epic!
6. Spremanje i Učitavanje: Persistent Inventory 💾
Koristite JsonUtility za save. Kreirajte SaveData.cs s listom slotova, zatim:
string json = JsonUtility.ToJson(this);
PlayerPrefs.SetString("InventorySave", json);
Učitajte na start. Radi savršeno za singleplayer – multiplayer? Dodajte Photon ili Mirror kasnije.
7. Testiranje i Optimizacija: Izbjegnite Greške ⚠️
✅ Testirajte edge caseove: pun inventory, max stack, null itemi.
✅ Optimizirajte: Koristite object pooling za UI slotove.
❌ Izbjegavajte: Update() u svakom frameu – koristite events.
S vašim novim sustavom inventara, igra će biti hit! Podijelite u komentarima svoje rezultate. Što dalje? Probajte crafting sustav – link u bio! 👏
Što mislite, je li ovo dovoljno za vaš sljedeći blockbuster? Pustite kreativnost slobodno!