Imagina explorar un mundo vasto, recolectar tesoros legendarios y gestionarlos con fluidez en tu inventario. Un sistema de inventario sólido es el corazón de cualquier RPG, survival o adventure game. ¿Listo para construir uno que deje a tus jugadores enganchados? Esta guía te lleva de cero a héroe con pasos prácticos, código listo para copiar y trucos pro. ¡Empecemos! ⭐
1️⃣ Entiende los Fundamentos de un Sistema de Inventario
Un sistema de inventario maneja items como armas, pociones o recursos. Debe ser intuitivo, escalable y optimizado para no laggear en mundos grandes.
- Tipos de inventario: Fijo (slots limitados), dinámico (scroll infinito) o grid-based (como Minecraft).
- Funciones clave: Añadir/quitar items, stackeo, drag & drop, filtros por categoría.
- Para game devs principiantes, empieza con Unity: gratuito y potente en las versiones más recientes.
¡Elige el tipo que encaje en tu juego para maximizar la diversión! 👍
2️⃣ Diseña Tu Estructura de Datos
El núcleo es una clase Item y una lista para el inventario. Usa ScriptableObjects en Unity para items reutilizables.
Ejemplo de Clase Item (C#):
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject {
public string itemName;
public Sprite icon;
public bool isStackable;
public int maxStackSize = 99;
}
Para el inventario, crea una clase Inventory con List<InventorySlot>.
| Propiedad |
Descripción |
Ejemplo |
| itemName |
Nombre único del ítem |
"Espada de Fuego" |
| icon |
Sprite para UI |
Imagen 64x64 px |
| maxStackSize |
Límite de pila |
99 para pociones |
3️⃣ Implementa la Lógica Principal
Adjunta Inventory.cs a un GameObject vacío. Aquí el código base para añadir items:
[System.Serializable]
public class InventorySlot {
public Item item;
public int amount;
public void AddAmount(int quantity) {
amount = Mathf.Min(amount + quantity, item.maxStackSize);
}
}
public class Inventory : MonoBehaviour {
public List<InventorySlot> slots = new List<InventorySlot>(20);
public bool AddItem(Item item, int amount = 1) {
// Lógica de stackeo primero
foreach (var slot in slots) {
if (slot.item == item && slot.amount < item.maxStackSize) {
slot.AddAmount(amount);
return true;
}
}
// Nuevo slot si hay espacio
if (slots.Count < 20) {
InventorySlot newSlot = new InventorySlot { item = item, amount = amount };
slots.Add(newSlot);
return true;
}
return false; // Inventario lleno 😢
}
}
¡Prueba esto en tu escena y ve items apilándose mágicamente! Ahora, integra eventos para UI updates con UnityEvent.
4️⃣ Crea la Interfaz de Usuario (UI) Impactante
Usa Canvas con Grid Layout Group para slots. Cada slot: Image para icono, Text para cantidad, Button para interacciones.
- Crea prefab InventorySlotUI.
- Script
SlotUI.cs para actualizar visualmente:
public class SlotUI : MonoBehaviour {
public Image icon;
public Text amountText;
public InventorySlot slot;
public void UpdateSlot() {
if (slot.item != null) {
icon.sprite = slot.item.icon;
amountText.text = slot.amount > 1 ? slot.amount.ToString() : "";
}
}
}
Añade drag & drop con IDragHandler de Unity UI. ¡Tus jugadores amarán arrastrar items como en Diablo!
5️⃣ Optimiza y Añade Features Avanzadas
- Persistencia: Guarda con JsonUtility o PlayerPrefs para sesiones largas.
- Filtros: Botones para categorías (Armas, Armaduras). Usa LINQ para buscar rápido.
- Tooltips: Hover para stats detallados.
- Para móviles, optimiza con object pooling en slots.
En las builds más recientes de Unity, aprovecha Addressables para assets dinámicos y cero carga extra.
🚀 Tips Pro para Game Devs Éxitosos
Evita errores comunes: No uses arrays fijos; listas son flexibles. Testea con 1000+ items para performance.
Si buscas inspiración, mira sistemas como en Unity UI Docs o foros como Unity Forum.
¡Con este sistema de inventario, tu juego pasará de amateur a pro en horas! ¿Cuál feature probarás primero? Comparte en comentarios. 👇
¡Sigue practicando y publica tu demo! Tu próximo hit indie te espera. 🎮✨