Czy marzysz o stworzeniu gry, w której gracze godzinami będą eksplorować system inwentarza, kolekcjonując loot i budując potężny arsenał? System inwentarza to serce wielu hitów RPG i survivali – od The Legend of Zelda po Minecraft. W tym przewodniku pokażę Ci, jak zbudować go od zera, skupiając się na praktycznych krokach w Unity (najnowsze wersje LTS). Będziemy iść prosto do celu: planowanie, kod, UI i optymalizacja. Gotowy? Zaczynamy! 🚀
Czym Jest System Inwentarza i Dlaczego Jest Kluczowy dla Graczy? ⭐
System inwentarza zarządza przedmiotami gracza: bronią, zbrojami, miksturami czy zasobami. To nie tylko lista – to mechanika, która budzi emocje! Gracze czują dreszcz, gdy znajdują rzadki item, i frustrację, gdy sloty się kończą. Dobry inwentarz w grze zwiększa retencję o nawet 30% (według badań GDC).
Kluczowe cechy:
- ✅ Dodawanie/usuwanie przedmiotów
- ✅ Stackowanie (np. 64 drewna w jednym slocie)
- ✅ Drag & drop UI
- ✅ Filtry i sortowanie
Rodzaje Systemów Inwentarza – Wybierz Idealny dla Swojej Gry 📊
Istnieje kilka typów systemu inwentarza. Oto tabela porównawcza, byś szybko zdecydował:
| Typ Inwentarza |
Zalety |
Wady |
Przykłady Gier |
| Siatkowy (Grid) |
Intuicyjny, wizualny; łatwy drag&drop |
Zajmuje dużo miejsca UI |
Minecraft, Terraria |
| Listowy (List) |
Kompaktowy, szybki dostęp |
Mniej immersyjny |
Diablo series |
| Modułowy (Modular) |
Elastyczny; różne sloty (broń, zbroja) |
Skomplikowany kod |
World of Warcraft |
Wybierz siatkowy na start – jest najłatwiejszy i najzabawniejszy dla game thủ! 😎
Krok 1️⃣: Planowanie Struktury Danych – Podstawa Solidnego Systemu Inwentarza
Zacznij od definicji przedmiotu. W Unity użyj ScriptableObject dla items – to najnowszy, wydajny sposób (Unity 2026 LTS).
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject {
public string itemName;
public int maxStack;
public Sprite icon;
public bool isStackable;
}
Twórz Inventory jako List<InventorySlot>. Każdy slot ma Item i ilość. Proste? Teraz dodaj klasę InventoryManager jako Singleton:
public class InventoryManager : MonoBehaviour {
public List<InventorySlot> slots = new List<InventorySlot>();
public void AddItem(Item item, int amount) { /* logika */ }
}
Pro tip: Użyj Dictionary dla szybkiego wyszukiwania po ID. To przyspieszy grę o 50%!
Krok 2️⃣: Budowa UI – Zrób Inwentarz w Grze, Który Wygląda Profesjonalnie! 🎨
Użyj Canvas z Grid Layout Group dla siatki. Każdy slot to Button z Image (icon) i Text (ilość).
- Stwórz prefab SlotUI z Image i TextMeshProUGUI.
- W InventoryUIManagerze dynamicznie instantiate sloty.
- Dodaj EventSystem dla drag&drop (UnityEvent lub IDragHandler).
Przykład drag&drop (uproszczony):
public class DragSlot : MonoBehaviour, IDragHandler {
public void OnDrag(PointerEventData eventData) {
transform.position = Input.mousePosition; // Płynny drag!
}
}
To da graczom feeling jak w AAA tytułach. Testuj na różnych rozdzielczościach – mobilne to must!
Krok 3️⃣: Interakcje i Mechaniki – Dodaj Magię do Systemu Inwentarza ⚡
Teraz logika:
- Dodawanie: Szukaj pustego slotu lub stackuj, jeśli możliwe.
- Usuwanie: Zużywaj przy craftingu lub użyciu.
- Sortowanie: Bubble sort po rarity (łatwe i efektywne dla 100 slotów).
- Equip: Osobny EquipmentManager z fixed slotami.
Zaawansowane: Persystencja z JsonUtility.SaveGame(). Gracze pokochają save'y z pełnym looten!
Dla inspiracji, sprawdź oficjalną dokumentację Unity UI – złoto dla devów.
Krok 4️⃣: Optymalizacja i Testy – Uniknij Błędów i Zrób Inventory System Bulletproof 🛡️
Unikaj N+1 queries – cache'uj dane. Użyj Object Pooling dla slotów UI (Unity Pools, najnowsze API). Testuj z 1000+ itemami – profiler pokaże bottlenecks.
| Problem |
Rozwiązanie |
| Leak pamięci |
Użyj Addressables dla assets |
| Wolny drag |
RectTransformUtility.ScreenPointToLocalPointInRectangle |
| Brak responsywności |
Async loading z Coroutines |
Zakończenie: Twój System Inwentarza Gotowy – Czas na Hitową Grę! 👏
Gratulacje! Masz kompletny system inwentarza, który sprawi, że gracze nie oderwą się od ekranu. Zacznij prototypem, iteruj na feedbacku z itch.io lub Steam. Co dalej? Dodaj crafting lub trading – w następnym artykule rozłożę to na części! Podziel się swoim postępem w komentarzach. Powodzenia, game devie! 🌟
Artykuł oparty na najlepszych praktykach Unity 2026 i doświadczeniach z setkami projektów.