Představte si, že váš hráč sbírá poklady, zbraně a lektvary – ale bez perfektního inventářového systému je to jen chaos! 😩 Tento průvodce vám ukáže, jak vytvořit inventářový systém, který bude intuitivní, rychlý a plný herní magie. Ať jste začátečník v Unity nebo profík v Godotu, zůstaňte s námi – čeká vás kód, tipy a triky, které změní vaši hru!
1️⃣ Základy: Proč Je Inventářový Systém Klíčový?
Inventářový systém není jen seznam předmětů – je to srdce RPG, survival nebo akčních her. Podle nejnovějších trendů v game devu (jako v Elden Ring nebo Valheim) musí být flexibilní: podporovat stackování, drag&drop a vyhledávání. Začněte s jednoduchou myšlenkou: každý předmět má ID, množství a vlastnosti.
2️⃣ Volba Game Engine: Unity, Godot nebo Unreal?
Vyberte engine podle vašich potřeb. Zde je rychlé srovnání v tabulce:
| Engine | Výhody pro Inventář | Naděje pro Začátečníky |
|---|---|---|
| Unity | ScriptableObjects pro items, UI Canvas ready | ⭐⭐⭐⭐⭐ |
| Godot | Resource system, GDScript super rychlý | ⭐⭐⭐⭐ |
| Unreal | Blueprints pro no-code prototypy | ⭐⭐⭐ |
Pro většinu indie devů je Unity top volba díky Asset Store plném bezplatných inventory pluginů.
3️⃣ Datové Struktury: Srdce Vašeho Inventáře
Nejlepší volba? List<Item> pro dynamiku nebo Dictionary<int, ItemStack> pro rychlé vyhledávání. Vytvořte třídu Item:
public class Item {
public string name;
public int id;
public Sprite icon;
public int maxStack = 99;
}
Přidejte metodu AddItem(int amount): Pokud stack není plný, přidejte; jinak vytvořte nový slot. To zajistí plynulost i při tisících předmětů! 👍
4️⃣ Implementace v Unity: Krok za Krokem
1. Vytvořte InventoryManager Script.
2. Připojte k GameObjectu.
3. Použijte UI Grid Layout pro sloty.
4. Drag&Drop s EventSystem – stačí IPointerDownHandler.
Příklad kódu pro přidání itemu:
public void AddItem(Item item, int count) {
foreach (var slot in slots) {
if (slot.CanAdd(item)) {
slot.Add(item, count);
return;
}
}
// Vytvoř nový slot
}
Toto funguje i v nejnovějších Unity verzích s Input System 1.8+.
5️⃣ UI Design: Udělejte to Sexy! ✨
Inventář musí být vizuálně atraktivní. Použijte ScrollView s maskou, animace při hoveru (DOTween je super). Přidejte filtry: zbraně, spotřebníky, quest items. Hráči milují tooltipy s popisy!
Tip: Testujte na mobile – dotykové ovládání vyžaduje větší sloty (min. 64x64px).
6️⃣ Pokročilé Funkce: Stackování, Durabilita a Trade
Rozšiřte systém:
⭐ Stackování: ItemStack s currentCount.
⭐ Durabilita: int durability; Update bar v UI.
⭐ Vyhledávání: LINQ query na slots.Where(x => x.name.Contains(search)).
Pro multiplayer? Sync přes Photon nebo Mirror – ideální pro trading mezi hráči.
7️⃣ Optimalizace a Best Practices
Nepřehánějte sloty (max 100 pro výkon). Použijte Object Pooling pro itemy. Pro Godot: Node3D pro 3D preview. A pamatujte: persistujte data v JSON pro save/load!
Zdroj inspirace: Unity UI Docs nebo Godot Manual.
Závěr: Vaše Hra Bude Legendární! 🎉
Teď už víte jak vytvořit inventářový systém od nuly. Začněte prototypem, testujte s přáteli a iterujte. Co kdybyste přidali crafting? Pokračujte v experimentování – vaše hra si to zaslouží! Pokud máte otázky, pište v komentářích. Happy coding! 🚀