Menu
CoddyTech

Sobrevive

Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 47 de 50.

challenge icon

Desafío

Intermedio

Último paso: la partida termina y se conserva la mejor partida. Conserva todo lo de las lecciones anteriores. El canvas tiene un GameOverPanel oculto con ResultText, BestText y un RestartButton con la etiqueta «¡A luchar de nuevo!», y el objeto GameManager tiene tu script GameManager, con hero, spawner, gameOverPanel, resultText, bestText y restartButton configurados en el Inspector.

  • Hero obtiene public event Action Died, que se activa cuando su salud llega a 0, después de que se desactive.
  • En GameManager.cs, añade una clase [System.Serializable] llamada BestRun con public int wave y public int kills.
  • GameManager escucha el Died del héroe y Enemy.Died, que cuenta las eliminaciones de esta partida: suscríbete en OnEnable y anula la suscripción en OnDisable. En Start, carga la mejor partida desde best.json en Application.persistentDataPath con JsonUtility, si ese archivo existe; oculta el panel y haz que restartButton reinicie el juego.
  • Cuando el héroe muera, detén el juego (Time.timeScale 0). La partida se compone de la Wave del generador y las eliminaciones. Es una nueva mejor marca si llegó a una oleada superior, o a la misma oleada con más eliminaciones: después pasa a ser la mejor y se guarda en best.json con JsonUtility.ToJson. Muestra la partida en resultText, como Wave 2, 7 kills, y la mejor marca en bestText, como Best: wave 3, 12 kills; después, muestra el panel.
  • El reinicio vuelve a poner la escala de tiempo en 1 y carga de nuevo la escena.

Pulsa Jugar y lucha hasta caer; después, intenta superar tu mejor marca. Luego, pulsa Comprobar.

Pruébalo tú mismo

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // Una lección posterior completará esto: el final de la partida y la mejor partida.
}

Todas las lecciones de Arquitectura de juegos en Unity