El final de la noche
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 60 de 60.
El último desafío completa un juego entero: un administrador con estados, una pausa que detiene el tiempo, dos finales y un reinicio que restablece la escala de tiempo.
Desafío
DifícilAñade una pausa, dos finales y una opción para reiniciar.
pauseButtonalterna únicamente entre Playing y Paused: Paused estableceTime.timeScaleen 0 y muestrapausePanel; Playing deshace ambas cosas.- Al llegar a 0 segundos, la noche se gana. En Won o Lost: escala de tiempo 0,
endPanelmuestraYou survived the night!oThe bats got youenendText. restartButtonestablece la escala de tiempo en 1 y vuelve a cargar la escena.
Pulsa «Jugar», pausa, pierde y vuelve a jugar. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public class GameManager : MonoBehaviour
{
public enum State { Playing, Paused, Won, Lost }
public static GameManager Instance;
public float nightLength = 15f;
public float spawnEvery = 2f;
public GameObject batPrefab;
public Transform[] spawnPoints;
public TMP_Text dawnText;
public Button pauseButton;
public GameObject pausePanel;
public GameObject endPanel;
public TMP_Text endText;
public Button restartButton;
public State state;
private float timeLeft;
private float spawnTimer;
void Awake()
{
Instance = this;
}
void Start()
{
state = State.Playing;
timeLeft = nightLength;
ShowDawn();
}
void Update()
{
if (state != State.Playing) return;
timeLeft -= Time.deltaTime;
spawnTimer += Time.deltaTime;
if (spawnTimer >= spawnEvery)
{
spawnTimer -= spawnEvery;
Transform point = spawnPoints[Random.Range(0, spawnPoints.Length)];
Instantiate(batPrefab, point.position, Quaternion.identity);
}
ShowDawn();
}
public void Lose()
{
if (state != State.Playing) return;
state = State.Lost;
}
void ShowDawn()
{
dawnText.text = "Dawn in " + Mathf.CeilToInt(timeLeft);
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Creación de juegos reales
1Texto en pantalla
Canvas y textoMuestra la puntuaciónDa formato a los númerosUn temporizador de cuenta regresivaRepaso: velocímetro2Botones y pantallas
Botones y onClickLambdasConectar en el InspectorPaneles activados y desactivadosBarras de saludRepaso: tienda de mejoras5Guardar con PlayerPrefs
Guardar un númeroCargar con un valor predeterminadoPuntuación más altaGuardar ajustesRepaso: monedas en el banco3El gestor del juego
Un solo script ejecuta el juegoEl SingletonEstados del juegoActivar el estadoRepaso: gestor de rondas6Proyecto: Corredor sin fin
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entradaPractica por tu cuenta: Playground de Unity