Uruchom poziom ponownie
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 18 z 60.
Najszybszym sposobem na zresetowanie poziomu jest ponowne jego wczytanie. SceneManager.GetActiveScene() zwraca scenę, która jest teraz otwarta, a jej name (lub buildIndex) to argument przyjmowany przez LoadScene. Przycisk „Restart” na panelu końca gry wywołuje:
public void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}Unity niszczy otwartą scenę i tworzy ją ponownie z pliku sceny. Każdy obiekt wraca na swoje miejsce ze sceny, w tym skrzynia przewrócona przez gracza, każde pole znów ma wartość z Inspektora, a Awake i Start uruchamiają się ponownie. Żaden kod nie musi przywracać elementów jeden po drugim. Ponieważ przycisk pobiera aktywną scenę zamiast nazwy takiej jak "Level3", ten sam skrypt restartuje każdy poziom, w którym zostanie umieszczony.
Pole static nie jest częścią sceny: należy do klasy, więc ponowne wczytanie nie zmienia jego wartości. Pole private static float bestTime; przechowuje najlepszy czas między restartami, a zwykłe pole private float time; zaczyna od 0 wraz z nową sceną. GameManager.Instance również jest statyczne: po ponownym wczytaniu wskazuje na zniszczony GameManager, dopóki Awake nowego obiektu go nie ustawi.
Wyzwanie
ŁatwyUpadek powinien restartować poziom, w którym znajduje się gracz, i zwiększać licznik upadków.
- Dodaj
using UnityEngine.SceneManagement;i zmień licznik naprivate static int falls;, aby zachował wartość po ponownym wczytaniu. - W
Update(), gdyplayer.position.y < fallY, wykonajfalls++;i wczytajSceneManager.GetActiveScene().name.
Naciśnij „Graj” i zeskocz z krawędzi na obu poziomach: Falls: 1, a następnie Falls: 2. Potem naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
using TMPro;
public class LevelRestart : MonoBehaviour
{
public Transform player;
public TMP_Text fallsText;
public float fallY = -3f;
private int falls;
void Start()
{
fallsText.text = "Falls: " + falls;
}
void Update()
{
// poniżej fallY: zlicz upadek i uruchom ponownie poziom, na którym znajduje się gracz
}
}
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 poziomu2Przyciski 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