Mejor partida
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 32 de 56.
Desafío
IntermedioÚltimo paso: recuerda la mejor carrera. Conserva todo lo de las lecciones anteriores. El lienzo tiene un BestText en la esquina superior derecha, y el panel tiene un NewBestText oculto (¡Nuevo récord!); la escena los coloca en dos campos nuevos de GameManager, public TMP_Text bestText; y public GameObject newBestText;. Guarda la mejor carrera con la clave BestRun, en metros enteros:
- En
Start(), carga la mejor marca (0 para un jugador nuevo) y muéstrala comoBest: 57 m. - En
GameOver(), cuando los metros enteros de la carrera,Mathf.FloorToInt(distance), superen la mejor marca, guarda la nueva mejor marca, muéstrala y muestranewBestText. Una carrera más corta no cambia nada.
La mejor marca se conserva al volver a jugar y al salir del juego. Pulsa Play, establece una mejor marca e intenta superarla; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public enum GameState { Playing, GameOver }
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public float speed = 10f;
public float speedUp = 0.5f;
public float maxSpeed = 20f;
public TMP_Text distanceText;
public GameObject gameOverPanel;
public Button restartButton;
public GameState state = GameState.Playing;
private float distance;
void Awake()
{
Instance = this;
}
void Start()
{
restartButton.onClick.AddListener(Restart);
}
void Update()
{
if (state != GameState.Playing) return;
speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
distance += speed * Time.deltaTime;
distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
}
public void GameOver()
{
state = GameState.GameOver;
speed = 0f;
gameOverPanel.SetActive(true);
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
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ímetro4Escenas y niveles
Cargar una escenaReiniciar el nivelSiguiente nivelConservar entre escenasRepaso: selección de nivel10Proyecto: plataformas 3D
El recorridoPlataformas móviles2Botones 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 infinito
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entrada