Cómo implementar un sistema de inventario en Unity (estructurado y escalable)

Serie: Arquitectura y Programación en Unity para Desarrolladores Indie
Por qué un buen sistema de inventario es clave en tu videojuego
Un sistema de inventario bien diseñado puede marcar una gran diferencia en la experiencia del jugador. Desde RPG hasta survival games, administrar objetos, recursos y equipamiento es una mecánica central que impacta directamente en la jugabilidad.
El problema aparece cuando el inventario se construye sin estructura: código difícil de mantener, errores frecuentes y poca escalabilidad.
Por eso, implementar un sistema modular desde el inicio es una decisión estratégica para cualquier desarrollador indie.
Si aún no has trabajado la base arquitectónica, revisa cómo estructurar el código de un videojuego indie.
¿Qué debe tener un sistema de inventario?
Un inventario funcional suele incluir:
- Definición de ítems.
- Slots o espacios de almacenamiento.
- Lógica para agregar y remover objetos.
- Persistencia de datos.
- Interfaz visual (UI).
La clave está en separar datos, lógica y presentación.
Definir los ítems con Scriptable Objects
Una excelente práctica es usar Scriptable Objects para almacenar información de los objetos.
using UnityEngine;
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class ItemData : ScriptableObject
{
public string itemName;
public Sprite icon;
public bool stackable;
}
Esto permite reutilizar datos sin hardcodear información en scripts.
Si quieres profundizar en esto, revisa Scriptable Objects en Unity.
Crear los slots del inventario
Cada slot representa un espacio donde se guarda un ítem:
[System.Serializable]
public class InventorySlot
{
public ItemData item;
public int amount;
}
Esto facilita el control de cantidad y stackeo.
Crear el Inventory Manager
El manager controla toda la lógica:
using System.Collections.Generic;
using UnityEngine;
public class InventoryManager : MonoBehaviour
{
public List<InventorySlot> inventory;
public void AddItem(ItemData item)
{
InventorySlot newSlot = new InventorySlot();
newSlot.item = item;
newSlot.amount = 1;
inventory.Add(newSlot);
}
}
Este sistema puede escalar fácilmente usando Dependency Injection y State Machine.
Integración con UI
La interfaz visual debe reflejar el inventario en tiempo real:
- Mostrar iconos.
- Cantidad de objetos.
- Descripción de ítems.
- Equipamiento.
Esto se conecta con sistemas de UI en Unity.
Guardar el inventario
Persistir el progreso es fundamental. Puedes usar:
- JSON.
- PlayerPrefs (solo casos simples).
- Archivos binarios.
- Bases de datos locales.
Esto se relaciona con Save System en Unity.
Buenas prácticas
- No hardcodear ítems.
- Separar UI y lógica.
- Usar estructuras modulares.
- Preparar el sistema para expansión futura.
Esto evita problemas cuando el proyecto crece.
Errores comunes
- Guardar datos directamente en UI.
- No manejar correctamente el stack de objetos.
- Acoplar demasiado el sistema.
Estos errores suelen aparecer en proyectos que crecen sin planificación.
Una base sólida para sistemas complejos
El sistema de inventario es una de las piezas más importantes en muchos videojuegos modernos.
Construirlo de forma escalable desde el inicio ahorra tiempo, reduce errores y mejora la experiencia del jugador.
Dominar este sistema es un paso clave hacia proyectos más profesionales.


