Sabe qual é a sensação? A de que você já dominou o movimento do personagem, o pulo, e até a câmera. Mas aí, a necessidade de um inventário bate na porta. E a sua mente trava.
“Como eu guardo os itens?”, “Eles vão sumir se eu fechar o jogo?”, “Como mostro na tela?”. De repente, o sonho de ter um RPG ou um jogo de sobrevivência vira um pesadelo de complexidade.
Se isso te soa familiar, relaxa. Você não é o único. A boa notícia é que um sistema de inventário, apesar de parecer um monstro, é na verdade uma sequência de passos simples e lógicos.
Neste post, vamos te mostrar como criar a base de um inventário. A gente vai focar em três pilares:
- A Classe Item: Como dar uma identidade para cada item do seu jogo.
- O Gerenciador de Inventário: Como guardar, adicionar e remover esses itens.
- A Interface: Como exibir tudo isso para o jogador.
E a gente vai fazer isso usando a ferramenta mais importante do seu kit de dev: a simplicidade.
Parte 1: A Identidade Secreta de Cada Item (A Classe Item)
Antes de guardar um item, você precisa definir o que ele é. Uma espada tem um nome, um ícone e talvez um dano. Uma poção tem um nome, um ícone e a quantidade de vida que recupera.
A forma mais organizada de fazer isso é criando uma class
. Pense nela como a “carteira de identidade” do seu item.
Crie um novo script em C# (chame-o de Item
) e cole o código abaixo.
using UnityEngine;
// [System.Serializable] permite que a classe seja visível no Inspector da Unity.
[System.Serializable]
public class Item
{
public string itemName;
public Sprite itemIcon;
public int itemID;
public int itemQuantity;
}
[System.Serializable]
: Essa linha é mágica. Ela faz com que a sua classeItem
apareça no Inspector da Unity, permitindo que você a configure facilmente em outros scripts.itemName
,itemIcon
, etc.: Essas variáveis definem as propriedades básicas de qualquer item. Você pode adicionar mais, comoitemDescription
,itemWeight
, etc. O importante é começar com o mínimo necessário.
Parte 2: O Guardião dos Itens (O Gerenciador de Inventário)
Agora que a gente tem a identidade dos itens, precisamos de um “guarda-volumes” para eles. Esse será o nosso gerenciador de inventário. Ele vai ser um script que a gente vai colocar no nosso personagem ou em um objeto vazio na cena (recomendado para organização).
Crie um novo script (chame-o de InventoryManager
) e cole o código:
using UnityEngine;
using System.Collections.Generic; // Precisamos disso para usar a List
public class InventoryManager : MonoBehaviour
{
public static InventoryManager instance; // Singleton para facilitar o acesso
public List<Item> inventoryItems = new List<Item>();
public int inventoryCapacity = 20; // Capacidade máxima do inventário
void Awake()
{
// Garante que só há uma instância do gerenciador
if (instance != null)
{
Debug.LogWarning("Mais de um InventoryManager na cena!");
return;
}
instance = this;
}
public void AddItem(Item item)
{
// Verifica se ainda tem espaço no inventário
if (inventoryItems.Count >= inventoryCapacity)
{
Debug.Log("Inventário cheio!");
return;
}
// Adiciona o item na lista
inventoryItems.Add(item);
Debug.Log("Item " + item.itemName + " adicionado!");
}
public void RemoveItem(Item item)
{
// Remove o item da lista
inventoryItems.Remove(item);
}
}
List<Item>
: É o nosso contêiner. A lista é perfeita porque ela cresce e diminui dinamicamente. Melhor que umArray
para inventários, que tem um tamanho fixo.AddItem
eRemoveItem
: São os métodos que você vai chamar de outros scripts para interagir com o inventário. Por exemplo, quando o jogador pega uma espada no chão, o seu script dePickup
vai chamarInventoryManager.instance.AddItem(espada)
.
O Próximo Passo
Você já tem a estrutura. A classe Item
define o que é um objeto, e a InventoryManager
cuida de guardar e gerenciar esses objetos. Esse é o coração do seu sistema.
O que falta? O visual!
No nosso próximo post, vamos mergulhar na interface do usuário (UI) da Unity. A gente vai te mostrar como usar o que aprendemos aqui para exibir os itens na tela, usando um simples for loop
para preencher os “slots” do inventário.