Das Ende der Nacht
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 60 von 60.
Die letzte Herausforderung vervollständigt ein ganzes Spiel: einen Manager mit Zuständen, eine Pause, die die Zeit anhält, zwei Enden und einen Neustart, der die Zeitskalierung zurücksetzt.
Aufgabe
SchwerFüge eine Pause, zwei Endzustände und einen Neustart hinzu.
pauseButtonwechselt nur zwischen Playing und Paused: Bei Paused wirdTime.timeScaleauf 0 gesetzt undpausePanelangezeigt; bei Playing werden beide Änderungen rückgängig gemacht.- Bei 0 Sekunden ist die Nacht Won. Bei Won oder Lost: Zeitskalierung 0,
endPanelwird angezeigt undYou survived the night!oderThe bats got youerscheint inendText. restartButtonsetzt die Zeitskalierung auf 1 und lädt die Szene neu.
Drücke „Spielen“, pausiere, verliere und spiele erneut. Drücke dann „Prüfen“.
Probier es selbst
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);
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer2Buttons 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 BankÜbe selbstständig: Unity-Playground