Sistema de debug centralizado para exibir informações de depuração na tela durante a execução do jogo.
Arquivo: PlayerDebugManager.cs
Gerenciador singleton responsável por exibir mensagens de debug em tempo real na tela.
- Singleton Pattern - Apenas uma instância em toda a cena
- TextMeshPro Integration - Usa TextMeshPro para renderizar texto na UI
- Sistema de Slots - Cada classe pode ter sua própria linha de debug
- Atualização em Tempo Real - Mensagens são atualizadas a cada frame
No seu script, obtenha a instância do PlayerDebugManager:
PlayerDebugManager.Instance.AddLine("Sua mensagem", "Identificador");// Exemplo do PlayerMovement
PlayerDebugManager.Instance.AddLine($"Está no chão: {_isGrounded}", "GroundCheck");- Primeira chamada com um identificador → cria um novo slot (nova linha)
- Chamadas subsequentes com o mesmo identificador → atualiza a linha existente
Exemplo:
// Frame 1
AddLine("Velocidade: 5", "Movement"); // Cria slot 0
AddLine("Input: (1, 0)", "Input"); // Cria slot 1
// Frame 2
AddLine("Velocidade: 7", "Movement"); // Atualiza slot 0
AddLine("Input: (0, 1)", "Input"); // Atualiza slot 1
// Resultado na tela:
// Velocidade: 7
// Input: (0, 1)Adiciona ou atualiza uma linha de debug.
Parâmetros:
message- Texto a ser exibidoclassIdentifier- Identificador único (geralmente nome da classe)
Exemplo:
PlayerDebugManager.Instance.AddLine($"Input: Para cima ({movementInput.y})", nameof(PlayerMovement));Limpa todas as mensagens de debug.
Exemplo:
PlayerDebugManager.Instance.ClearAll();- Crie um Canvas (UI) na cena
- Crie um TextMeshPro Text element no Canvas
- Selecione o GameObject com o
PlayerDebugManager - Arraste o elemento TextMeshPro no campo
_debugText
Dictionary<string, int> _debugSlots // Mapeia identificador → índice do slot
List<string> _debugMessages // Lista de mensagens (uma por linha)
int _nextSlotIndex // Próximo índice disponívelpublic class MeuComponente : PlayerComponent {
public override void UpdateComponent() {
float velocidade = CalcularVelocidade();
bool emMovimento = velocidade > 0;
// Debug em tempo real
PlayerDebugManager.Instance.AddLine(
$"Velocidade: {velocidade:F2} | Em movimento: {emMovimento}",
nameof(MeuComponente)
);
}
}- 📊 Ideal para monitorar valores em tempo real durante desenvolvimento
- 🧹 Lembre de remover ou comentar chamadas de debug antes de fazer build final