Bester Lauf
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 32 von 56.
Aufgabe
MittelLetzter Schritt: Merke dir den besten Lauf. Behalte alles aus den vorherigen Lektionen bei. Die Canvas enthält oben rechts ein BestText und das Panel ein ausgeblendetes NewBestText (New best!); die Szene weist sie zwei neuen Feldern von GameManager zu: public TMP_Text bestText; und public GameObject newBestText;. Speichere den Bestwert unter dem Schlüssel BestRun in ganzen Metern:
- Lade in
Start()den Bestwert (0 für einen neuen Spieler) und zeige ihn alsBest: 57 man. - Wenn die ganzen Meter des Laufs,
Mathf.FloorToInt(distance), den Bestwert übertreffen, speichere inGameOver()den neuen Bestwert, zeige ihn an und blendenewBestTextein. Ein kürzerer Lauf ändert nichts.
Der Bestwert bleibt bei „Run again“ und auch nach dem Beenden des Spiels erhalten. Drücke Play, stelle einen Bestwert auf und versuche, ihn zu übertreffen, dann drücke Check.
Probier es selbst
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);
}
}
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank3Der Spielmanager
Ein Skript steuert das SpielDas SingletonSpielzuständeZum Zustand wechselnRückblick: Rundenmanager6Projekt: Endlos-Runner
Drei SpurenHindernisse voraus