Koniec nocy
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 60 z 60.
Ostatnie wyzwanie kończy całą grę: menedżer ze stanami, pauza zatrzymująca czas, dwa zakończenia i restart przywracający skalę czasu.
Wyzwanie
TrudnyDodaj pauzę, dwa zakończenia i możliwość ponownego rozpoczęcia.
pauseButtonprzełącza tylko między Playing i Paused: w stanie Paused ustawiaTime.timeScalena 0 i wyświetlapausePanel, a w stanie Playing cofa obie te zmiany.- Po upływie 0 sekund noc kończy się zwycięstwem (Won). W stanie Won lub Lost: skala czasu wynosi 0, a
endPanelwyświetla wendTextkomunikatYou survived the night!lubThe bats got you. restartButtonustawia skalę czasu na 1 i ponownie wczytuje scenę.
Naciśnij „Graj”, wstrzymaj grę, przegraj, zagraj ponownie. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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);
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w bankuPoćwicz samodzielnie: Edytor online Unity