Czas bez skalowania
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 35 z 56.
Wstrzymana lub spowolniona gra nadal potrzebuje rzeczywistego zegara do niektórych zadań: animowanego menu pauzy, odliczania przed wznowieniem gry, zamrożenia, które musi się samo zakończyć. Time.unscaledDeltaTime to rzeczywisty czas, który upłynął od poprzedniej klatki, niezależnie od wartości Time.timeScale, a Time.unscaledTime to rzeczywisty czas, który upłynął od uruchomienia gry. To menu pauzy obraca kółko ładowania w czasie rzeczywistym, więc kółko kręci się, gdy gra jest wstrzymana:
void Update()
{
wheel.Rotate(0f, 0f, -180f * Time.unscaledDeltaTime); // pół obrotu na sekundę, niezależnie od tego, czy gra jest wstrzymana
}Korutyny mają tę samą parę. WaitForSeconds odmierza czas gry, więc przy Time.timeScale = 0 nigdy się nie kończy; WaitForSecondsRealtime odmierza rzeczywiste sekundy. Uruchomiona podczas otwierania menu ta korutyna co pół sekundy miga tytułem menu:
IEnumerator Blink()
{
while (true)
{
title.SetActive(!title.activeSelf);
yield return new WaitForSecondsRealtime(0.5f);
}
}Używaj wartości skalowanych w rozgrywce, która powinna się zatrzymać, gdy zatrzymuje się gra, a wartości nieskalowanych do tego, co musi działać podczas pauzy lub spowolnienia: menu, jego animacji i timerów kończących pauzę. Invoke nie ma wersji korzystającej z czasu rzeczywistego: zawsze odmierza czas gry.
Wyzwanie
Średnihit stop sprawia, że mocne uderzenie wydaje się mocne: w chwili uderzenia cała gra zastyga na moment. Strzałki poruszają podajnikiem, a klawisz spacji zrzuca z niego kowadło (Dropper.cs, gotowy). Napisz Anvil.cs, który będzie mieć każde kowadło:
- Gdy kowadło w cokolwiek uderzy, zamroź grę:
Time.timeScale0. - Po
freezeTimerzeczywistych sekundach (0.3 w Inspectorze) ustaw z powrotem wartość 1.
Naciśnij Play, zrzuć kilka kowadeł, a następnie Check.
Spróbuj swoich sił
using System.Collections;
using UnityEngine;
public class Anvil : MonoBehaviour
{
public float freezeTime = 0.3f;
// Zatrzymaj grę na freezeTime sekund czasu rzeczywistego, gdy kowadło w coś uderzy
}
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ściomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski 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 banku