Criando um gerenciador de jogo simples no Unity

Um Game Manager em Unity é um script ou sistema central que supervisiona e controla a mecânica e a lógica principais de um jogo. Ele normalmente gerencia estados do jogo (por exemplo, início, pausa, fim), progresso do jogador, pontuações, níveis e configurações globais. O Game Manager é crucial para garantir uma estrutura limpa em seu projeto e evitar código redundante. Neste tutorial, criaremos um Game Manager básico para lidar com o estado do jogo e o rastreamento de pontuação.

Etapa 1: Configurando a cena

Para começar, prepare uma cena Unity simples:

  1. Crie um novo projeto Unity 3D.
  2. Adicione um layout de nível básico, como um Avião para o solo e alguns objetos para elementos de jogabilidade.
  3. Crie uma UI Canvas para exibir informações como a pontuação.

Etapa 2: Criando o script do gerenciador de jogos

O Game Manager será um singleton para garantir que seja facilmente acessível e que exista apenas uma instância durante o jogo. Vamos escrever o script:

  1. Clique com o botão direito no painel Project e selecione Create > C# Script. Nomeie-o como GameManager.
  2. Abra o script no seu editor de código e substitua seu conteúdo pelo seguinte:
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance; // Singleton instance

    public int score = 0; // Player's score
    public bool isGameActive = true; // Is the game running?

    void Awake()
    {
        // Ensure there is only one instance of GameManager
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject); // Persist across scenes
        }
        else
        {
            Destroy(gameObject); // Destroy duplicate instances
        }
    }

    // Method to increase the score
    public void AddScore(int points)
    {
        if (isGameActive)
        {
            score += points;
            Debug.Log("Score: " + score);
        }
    }

    // Method to end the game
    public void EndGame()
    {
        isGameActive = false;
        Debug.Log("Game Over!");
        // Additional logic to handle game over, like displaying UI
    }
}

Etapa 3: Adicionando o Game Manager à cena

Agora, vamos adicionar o Game Manager à cena:

  1. Crie um GameObject vazio na Hierarquia e nomeie-o GameManager.
  2. Arraste e solte o script GameManager no GameObject.
  3. Certifique-se de que não haja GameObjects do GameManager duplicados na cena.

Etapa 4: Atualizando a lógica do jogo

Vamos usar o Game Manager para lidar com interações de jogadores. Por exemplo, modificaremos objetos de gameplay para interagir com o Game Manager:

  1. Crie um novo script chamado Target para objetos com os quais o jogador pode interagir.
  2. Use o seguinte código para o script de destino:
using UnityEngine;

public class Target : MonoBehaviour
{
    public int pointValue = 10; // Points awarded for interacting with this target

    void OnMouseDown()
    {
        if (GameManager.Instance.isGameActive)
        {
            // Add points to the score
            GameManager.Instance.AddScore(pointValue);

            // Destroy the target
            Destroy(gameObject);
        }
    }
}

Este script assume que o jogador interage com objetos clicando neles. Você pode adaptá-lo à mecânica do seu jogo, como colisões ou gatilhos.

Etapa 5: Exibindo a pontuação

Para exibir a pontuação ao jogador:

  1. Crie um elemento de interface do usuário Texto no Canvas e nomeie-o ScoreText.
  2. Crie um novo script chamado ScoreUI e anexe-o ao Canvas.
  3. Use o seguinte código para atualizar a exibição da pontuação:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

    void Update()
    {
        if (GameManager.Instance != null)
        {
            scoreText.text = "Score: " + GameManager.Instance.score;
        }
    }
}

Arraste o elemento da interface do usuário ScoreText para o campo ScoreText no Inspetor.

Etapa 6: Testando o Game Manager

Para testar seu Game Manager:

  1. Execute a cena e interaja com objetos que usam o script Target.
  2. Observe a pontuação sendo atualizada na interface do usuário conforme você interage com os alvos.
  3. Chame o método EndGame (por exemplo, usando um gatilho ou botão) para testar o término do jogo.

Melhorias opcionais

Você pode expandir a funcionalidade do Game Manager com estes recursos:

  • Gerenciamento de níveis: Carregue novos níveis ou reinicie a cena no fim do jogo.
  • Cronômetro do jogo: Adicione um cronômetro de contagem regressiva para desafiar os jogadores.
  • Salvando o progresso: Armazene e recupere o progresso do jogador usando PlayerPrefs ou um sistema de salvamento.
  • Menu de pausa: Implemente um menu de pausa para parar o jogo e mostrar opções.

Conclusão

Criamos um Game Manager simples para gerenciar o estado do jogo e o rastreamento de pontuação em Unity. O Game Manager centraliza a lógica principal, tornando seu projeto mais organizado e escalável. Experimente recursos adicionais para adaptar o Game Manager às necessidades do seu jogo.