using UnityEngine; using UnityEngine.SceneManagement; using TMPro; // Administra el estado general de la partida: puntaje, vida y el fin del juego. public class GameManager : MonoBehaviour { // Guardamos una única referencia estática a este GameManager (patrón "Singleton"). // Así, cualquier otro script puede sumar puntos con GameManager.instancia.SumarPuntos(...) // sin que nosotros tengamos que arrastrar una referencia a mano en cada Inspector, // como sí hicimos con bulletPrefab o firePoint. public static GameManager instancia; [Header("Puntaje")] public TMP_Text textoPuntaje; [Header("Vida")] public TMP_Text textoVida; [Header("Game Over")] public GameObject panelGameOver; public TMP_Text textoPuntajeFinal; private int puntaje = 0; void Awake() { instancia = this; } void Start() { ActualizarTextoPuntaje(); } public void SumarPuntos(int cantidad) { puntaje += cantidad; ActualizarTextoPuntaje(); } void ActualizarTextoPuntaje() { textoPuntaje.text = "Puntaje: " + puntaje; } // PlayerController llama a este método cada vez que su vida cambia, para que el // GameManager (que es quien tiene la referencia a la UI) actualice el texto. public void ActualizarVida(int vidaActual, int vidaMaxima) { textoVida.text = "Vida: " + vidaActual + "/" + vidaMaxima; } public void TerminarJuego() { // Time.timeScale = 0 congela todo lo que dependa de Time.deltaTime o de la // física (el movimiento de meteoritos y enemigos incluido). Time.timeScale = 0f; textoPuntajeFinal.text = "Puntaje final: " + puntaje; panelGameOver.SetActive(true); } // Conectado al botón "Reintentar" desde el Inspector (Button > On Click). public void Reintentar() { // Hay que devolver el tiempo a la normalidad antes de recargar la escena: // si no, la escena nueva también empezaría congelada. Time.timeScale = 1f; // Recargar la misma escena reinicia todo (posiciones, vida, puntaje, spawners) // sin que tengamos que escribir código para "resetear" cada cosa a mano. Scene escenaActual = SceneManager.GetActiveScene(); SceneManager.LoadScene(escenaActual.name); } }