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:
- Crie um novo projeto Unity 3D.
- Adicione um layout de nível básico, como um Avião para o solo e alguns objetos para elementos de jogabilidade.
- 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:
- Clique com o botão direito no painel Project e selecione Create > C# Script. Nomeie-o como GameManager.
- 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:
- Crie um GameObject vazio na Hierarquia e nomeie-o GameManager.
- Arraste e solte o script GameManager no GameObject.
- 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:
- Crie um novo script chamado Target para objetos com os quais o jogador pode interagir.
- 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:
- Crie um elemento de interface do usuário Texto no Canvas e nomeie-o ScoreText.
- Crie um novo script chamado ScoreUI e anexe-o ao Canvas.
- 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:
- Execute a cena e interaja com objetos que usam o script Target.
- Observe a pontuação sendo atualizada na interface do usuário conforme você interage com os alvos.
- 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.