Miglior corsa
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 32 di 56.
Sfida
MedioUltimo passaggio: ricorda la migliore corsa. Mantieni tutto ciò che hai realizzato nelle lezioni precedenti. La canvas ha un BestText in alto a destra e il pannello ha un NewBestText nascosto (New best!); la scena li inserisce in due nuovi campi di GameManager, public TMP_Text bestText; e public GameObject newBestText;. Salva il record con la chiave BestRun, in metri interi:
- In
Start(), carica il record (0 per un nuovo giocatore) e visualizzalo comeBest: 57 m. - In
GameOver(), quando i metri interi della corsa,Mathf.FloorToInt(distance), superano il record, salva il nuovo record, visualizzalo e mostranewBestText. Una corsa più breve non cambia nulla.
Il record viene mantenuto anche quando scegli Run again e quando esci dal gioco. Premi Play, stabilisci un record e prova a batterlo, poi premi Check.
Provalo tu
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);
}
}
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro4Scene e livelli
Caricare una scenaRiavviare il livelloLivello successivoMantenere i dati tra le sceneRiepilogo: selezione del livello10Progetto: Platform 3D
Il percorsoPiattaforme mobili2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Corsa infinita
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di input