Powtórka: menedżer rund
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 16 z 60.
Ten rozdział dał grze jednego menedżera: singletona, do którego inni uzyskują dostęp bez pola, oraz stany, między którymi się przełącza. Menedżer rundy wykorzystuje oba te elementy.
Wyzwanie
ŁatwyDokończ zbieranie monet; SetState jest już napisane.
- Dodaj
public static RoundManager Instance;, ustawiane wAwake(). - W
Update()wykonaj przełączanie w zależności odstate: Ready czeka na spację; Playing odliczatimeLeft, a następnie przechodzi do kolejnego Ready albo do Finished po ostatniej rundzie. public bool TakeCoin(): tylko podczas Playing zlicz monetę, wyświetlCoins: 2i zwróć true.Coin.csniszczy zliczoną monetę, której dotknie Player.
Naciśnij „Graj” we wszystkich trzech rundach. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
using TMPro;
public enum RoundState { Ready, Playing, Finished }
public class RoundManager : MonoBehaviour
{
// singleton: statyczna instancja Instance, ustawiana w Awake()
public GameObject readyPanel;
public GameObject playPanel;
public GameObject finishedPanel;
public TMP_Text roundText;
public TMP_Text coinsText;
public TMP_Text finalText;
public int rounds = 3;
public float roundTime = 4f;
private RoundState state;
private int round = 1;
private int coins;
private float timeLeft;
void Start()
{
SetState(RoundState.Ready);
}
void Update()
{
// wybór na podstawie state: Ready czeka na Space; Playing odlicza czas
}
void SetState(RoundState next)
{
state = next;
readyPanel.SetActive(next == RoundState.Ready);
playPanel.SetActive(next == RoundState.Playing);
finishedPanel.SetActive(next == RoundState.Finished);
if (next == RoundState.Ready) roundText.text = "Round " + round;
if (next == RoundState.Playing) timeLeft = roundTime;
if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
}
// TakeCoin(): moneta jest liczona tylko w stanie Playing
}
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 banku3Menedżer gry
Jeden skrypt obsługuje gręSingletonStany gryInstrukcja switch dla stanuPowtórka: menedżer rund6Projekt: Niekończący się bieg
Trzy toryPrzeszkody przed tobąPoćwicz samodzielnie: Edytor online Unity