Imaginează-ți că jucătorul tău explorează lumi fantastice, adună loot-uri strălucitoare și organizează totul perfect în sistemul de inventar. Sună epic, nu? Ca developer de jocuri, un sistem de inventar bine făcut este inima multor aventuri RPG, survival sau roguelike. În acest ghid complet, îți arăt cum să creezi un sistem de inventar de la zero în Unity, folosind cele mai eficiente tehnici actuale. Fără baliverne – doar pași clari, cod gata de copiat și trucuri care te vor face să zâmbești când vezi rezultatul! 😎
Vei învăța să gestionezi iteme stackabile, drag-and-drop, UI responsive și salvări persistente. Hai să începem aventura!
1. Planifică Sistemul de Inventar: Fundația Solidă 🛠️
Înainte de cod, gândește-te la ce vrei: câți sloturi? Itemele pot fi stackate (ex: 99 săgeți)? Au durabilitate? Echipament special?
- 1️⃣ Tipuri de iteme: Consumabile (potion), arme, armuri.
- 2️⃣ Capacitate: 20-50 sloturi inițial, extensibilă cu bag-uri magice.
- 3️⃣ Interacțiuni: Pick-up, drop, equip, craft.
Această planificare evită refactorizări ulterioare. Folosește ScriptableObjects pentru iteme – ele sunt perfecte pentru date statice și ușor de editat în editorul Unity.
2. Creează Itemele cu ScriptableObjects: Baza Datelor Tale de Loot 💎
Primul pas practic: definește clasa Item ca ScriptableObject.
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject {
public string itemName;
public Sprite icon;
public bool isStackable;
public int maxStackSize = 99;
public int currentStack = 1;
}
Creează iteme noi direct din Assets! Adaugă proprietăți ca durabilitate sau raritate pentru farmec extra.
| ID |
Nume Item |
Tip |
Stackabil |
Icon |
| 1 |
Săgeată |
Consumabil |
Da (99) |
� corporation |
| 2 |
Spadă de Fier |
Armă |
Nu |
⚔️ |
| 3 |
Potion de Viață |
Healing |
Da (50) |
❤️ |
Această tabelă îți arată structura clară – copiaz-o în jocul tău!
3. Construiește Inventory Manager: Creierul Operațiunii 🧠
Aici intră magia! Creează un singleton InventoryManager care ține lista de sloturi.
public class InventoryManager : MonoBehaviour {
public static InventoryManager instance;
public List<InventorySlot> slots = new List<InventorySlot>();
public int maxSlots = 20;
void Awake() {
instance = this;
}
public bool AddItem(Item item) {
// Logică pentru stack sau slot nou
foreach (var slot in slots) {
if (slot.CanAdd(item)) {
slot.Add(item);
return true;
}
}
// Găsește slot gol
return false;
}
}
Explicat simplu: AddItem verifică stack-uri existente sau sloturi libere. Testează cu un buton de pick-up în scenă!
4. UI Intuitiv cu Drag & Drop: Fă-l Adictiv! 🎮
Nu uita UI-ul – folosește Canvas cu Grid Layout pentru sloturi. Fiecare InventorySlot e un GameObject cu Image pentru icon și Text pentru stack count.
Implementează drag-and-drop cu IDragHandler din Unity UI:
public class InventorySlot : MonoBehaviour, IDropHandler {
public Item currentItem;
public void OnDrop(PointerEventData eventData) {
// Schimbă iteme între sloturi
InventorySlot sourceSlot = eventData.pointerDrag.GetComponent<InventorySlot>();
if (sourceSlot != this) {
SwapItems(sourceSlot);
}
}
}
Rezultatul? Gameri vor trage iteme ca în Diablo! Adaugă animații cu DOTween pentru wow-effect. 👍
5. Salvări și Încărcări: Persistență Pro 🛡️
Folosește JSONUtility pentru salvări simple:
[Serializable]
public class SaveData {
public List<ItemSave> items;
}
string json = JsonUtility.ToJson(saveData);
File.WriteAllText(Application.persistentDataPath + "/save.json", json);
Încarcă la start – jucătorii tăi vor iubi progresul salvat!
6. Funcții Avansate: Equip, Craft și Mai Mult! 🚀
Extinde cu:
- Equipment Slots: Sloturi separate pentru armă, armură. Mută din inventar cu un buton "Equip".
- Crafting: Verifică rețete bazate pe iteme disponibile.
- Filtre: Butoane pentru "All", "Weapons", "Consumables".
Exemplu craft: Dacă ai 2 fier + 1 lemn = spadă nouă. Adaugă sunete și particule pentru imersiune totală! 🎉
Pro tip: Integrează cu Input System nou pentru controale perfecte pe PC/Mobile.
7. Optimizări și Greșeli Comune: Evită Capcanele 😤
- ❌ Nu uita să limitezi stack-urile – crash avoidance!
- ✅ Pooling pentru UI icons – performanță top.
- ✅ Testează pe device-uri low-end.
Debug cu Debug.Log în AddItem pentru a prinde bug-uri rapid.
Concluzie: Lanshează-ți Sistemul de Inventar și Cucereste Gameri! 👑
Felicitări! Acum ai un sistem de inventar profesionist care va face jocul tău memorabil. Testează, iterează și adaugă touch-uri unice – poate un inventar 3D sau procedurally generated? Continuă să experimentezi și share rezultatele în comentarii. Ce tip de joc faci tu? Hai să discutăm idei! 🔥
Pentru inspirație avansată, verifică documentația oficială Unity sau forumurile comunității.