Ilustração comparando um sistema de inventário complicado e confuso com um sistema de inventário MVP simples e funcional para desenvolvimento de jogos na Unity.

O Inventário de MVP: O Guia Simples para Criar um Sistema de Itens na Unity (Sem Enlouquecer)

Se você já digitou “como fazer um inventário na Unity” no YouTube, você conhece o sentimento. Em cinco minutos de vídeo, você já está perdido entre Scriptable Objects, * delegates*, events, slots dinâmicos e sistemas de arrastar e soltar que parecem mais complexos do que o seu jogo inteiro.

É o “buraco de coelho” perfeito. Um lugar onde a empolgação morre e os projetos são abandonados.

A verdade? Para o seu primeiro jogo, você provavelmente não precisa de nada disso. Você não precisa de um sistema de inventário digno de um RPG AAA. Você precisa de uma forma de saber se o jogador pegou a “Chave Vermelha” para poder abrir a “Porta Vermelha”.

É isso.

Este não é mais um tutorial que vai te afogar em complexidade. Este é o guia do Inventário Mínimo Viável (MVP). Vamos criar um sistema funcional, em poucos minutos, que faz o essencial: guarda uma lista do que o jogador coletou. Sem frescura, sem enlouquecer. Vamos lá.


Passo 1: A Estrutura – O que Realmente Precisamos?

Vamos esquecer a parte visual por um segundo. Um inventário, na sua forma mais pura, é apenas uma lista de coisas. Para o nosso MVP, precisaremos de três componentes:

  1. Um “cérebro” para o inventário: Um script, que pode ficar no nosso Jogador, responsável por guardar a lista de itens.
  2. Um script para os itens: Algo que possamos colocar nos objetos do mundo para dizer “eu sou um item coletável”.
  3. Algo para mostrar a lista na tela: A forma mais simples e “crua” possível, só para vermos que está funcionando.

Passo 2: O Cérebro (Script InventarioMVP)

Este é o coração do nosso sistema. Ele vai ter apenas uma responsabilidade: manter uma lista de texto (string) com o nome dos itens que coletamos.

  1. No seu projeto Unity, crie um novo script C# chamado InventarioMVP.
  2. Adicione este script ao seu objeto do Jogador.
  3. Abra o script e cole o seguinte código:
using System.Collections.Generic; // Precisamos disso para usar Listas!
using UnityEngine;

public class InventarioMVP : MonoBehaviour
{
    // A nossa lista de itens. Pública para que outros scripts possam acessá-la.
    public List<string> itensColetados = new List<string>();

    // Um método simples para adicionar um item à nossa lista
    public void AdicionarItem(string nomeDoItem)
    {
        // Adiciona o nome do item na nossa lista
        itensColetados.Add(nomeDoItem);

        // Imprime no console para sabermos que funcionou!
        Debug.Log("Coletou o item: " + nomeDoItem);
    }
}

Sim, é só isso. Temos uma lista e uma forma de adicionar coisas a ela.


Passo 3: O Item Coletável (Script ItemColetavel)

Agora, precisamos dos objetos que o jogador vai poder pegar.

  1. Crie um novo script C# chamado ItemColetavel.
  2. Crie um objeto na sua cena para ser o item (pode ser um Sprite de uma chave, uma moeda, ou até um simples Cubo).
  3. Adicione um Collider2D (ou Collider para 3D) a este objeto e marque a opção “Is Trigger”. Isso permite que o jogador “passe por cima” do item para coletá-lo.
  4. Adicione o script ItemColetavel a este objeto.
  5. Abra o script e cole o código abaixo:
using UnityEngine;

public class ItemColetavel : MonoBehaviour
{
    // O nome que este item terá no inventário
    public string nomeDoItem = "Chave Vermelha";

    private void OnTriggerEnter2D(Collider2D other)
    {
        // Verifica se o objeto que entrou no trigger é o Jogador (pela Tag)
        if (other.CompareTag("Player"))
        {
            // Pega o componente InventarioMVP do jogador
            InventarioMVP inventario = other.GetComponent<InventarioMVP>();

            // Se o inventário foi encontrado...
            if (inventario != null)
            {
                // Adiciona este item à lista do jogador
                inventario.AdicionarItem(nomeDoItem);

                // Destrói o objeto do item da cena
                Destroy(gameObject);
            }
        }
    }
}

Como funciona: Quando o jogador (que deve ter a tag “Player”) toca no item, este script encontra o inventário do jogador, chama a função AdicionarItem e depois se destrói. Simples e direto.


Passo 4: Usando o Inventário (Exemplo: Abrindo uma Porta)

Legal, temos itens na lista. E agora? Vamos usá-los! Imagine que você tem uma porta que só pode ser aberta se o jogador tiver a “Chave Vermelha”.

No script da sua porta (PortaTrancada.cs, por exemplo), você pode fazer uma verificação simples:

// Dentro do script da sua Porta...
// Suponha que você tenha uma referência ao seu objeto Jogador

private void OnCollisionEnter2D(Collision2D other)
{
    if (other.gameObject.CompareTag("Player"))
    {
        InventarioMVP inventario = other.gameObject.GetComponent<InventarioMVP>();

        // A mágica acontece aqui!
        if (inventario != null && inventario.itensColetados.Contains("Chave Vermelha"))
        {
            Debug.Log("Porta aberta!");
            // Coloque aqui a lógica para abrir ou destruir a porta
            Destroy(gameObject);
        }
        else
        {
            Debug.Log("A porta está trancada. Você precisa da Chave Vermelha.");
        }
    }
}

O método .Contains("NomeDoItem") é tudo que você precisa. Ele simplesmente checa se aquele texto existe na sua lista.


Conclusão: Você Acabou de Fazer um Inventário Funcional

Pare e pense no que fizemos. Em menos de 10 minutos, criamos um sistema que permite:

  • Coletar itens.
  • Guardar esses itens numa lista.
  • Verificar se um item foi coletado para acionar uma lógica no jogo.

Isto é um sistema de inventário. Não é o mais bonito, mas é funcional e, o mais importante, terminado. Você pode usar essa exata lógica para guardar chaves, moedas, poções ou qualquer outra coisa que seu jogo precise.

Lembre-se da filosofia da PERAI DEV: primeiro, faça funcionar. Depois, se e somente se o seu jogo precisar, você pode pensar em como deixar mais bonito. Mas por agora, celebre a vitória. Você domou um dos monstros mais temidos do desenvolvimento de jogos.

Agora, qual será o próximo sistema que você vai desmistificar? Deixe nos comentários!

Compartilhe !