Odliczanie czasu
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 4 z 60.
Odliczanie przechowuje pozostały czas w zmiennej typu float i odejmuje od niego Time.deltaTime w każdej klatce. Ostatnia klatka rzadko wypada dokładnie przy 0, dlatego Mathf.Max zatrzymuje odliczanie na tej wartości, a zakończenie musi nastąpić tylko raz. Ten zapalnik daje graczowi 5 sekund na rozbrojenie bomby:
public TMP_Text fuseText;
public float fuse = 5f;
private bool exploded;
void Update()
{
if (exploded)
{
return;
}
fuse = Mathf.Max(fuse - Time.deltaTime, 0f);
fuseText.text = "Fuse: " + Mathf.CeilToInt(fuse);
if (fuse == 0f)
{
exploded = true;
fuseText.text = "BOOM";
fuseText.color = Color.red;
}
}Mathf.CeilToInt zaokrągla w górę, tak jak powinno działać odliczanie: 5 przez całą pierwszą sekundę (4.99 zaokrągla się w górę do 5), 1 w ostatniej sekundzie i 0 dopiero po upływie czasu. (int)fuse obcięłoby 4.99 do 4 i pokazywałoby 0 przez całą ostatnią sekundę, gdy bomba wciąż tyka; Mathf.RoundToInt pokazywałoby 0 przez ostatnie pół sekundy. Dłuższe odliczanie wyświetlane w minutach i sekundach podlega tej samej zasadzie: najpierw zaokrąglij czas w górę do pełnych sekund, a dopiero potem je sformatuj.
Wczesne return pozostawia BOOM na ekranie: bez niego następna klatka wyświetliłaby na nim Fuse: 0. Tekst ma też kolor, a fuseText.color = Color.red zmienia go na czerwony.
Wyzwanie
ŁatwySpraw, by parkomat odliczał opłacony czas.
- W
Update()odejmijTime.deltaTimeodtimeLeft, nie schodząc poniżej 0, i wyświetlMathf.CeilToInt(timeLeft)jako minuty i sekundy:1:15. - Spacja dodaje 30 sekund, maksymalnie do
maxTime(2:00). - Przy 0 wyświetl
EXPIREDw kolorzeColor.red. ZacznijUpdate()odif (timeLeft == 0f) return;, aby tak pozostało.
Naciśnij „Graj” i wrzucaj monety: licznik zatrzyma się na 2:00. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
using TMPro;
public class ParkingMeter : MonoBehaviour
{
public TMP_Text meterText;
public float timeLeft = 60f;
public float maxTime = 120f;
void Update()
{
// Odliczaj timeLeft w dół i wyświetlaj go w minutach i sekundach; Space dodaje 30 sekund
}
}
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