Цел: Ако играчът умре, презаредете активната сцена, за да рестартирате ниво.

Много игри имат функция за ниво на рестартиране. В този случай, когато играчът умре, ние искаме играчът да може да натисне клавиша R, за да рестартира нивото.

Имаме текст Restart Game като дете на Canvas. Премахнете отметката от компонента Text Mesh Pro-Text (UI), така че да не се показва, докато плейърът е все още активен. Нека преминем към скрипта на UI Manager, който е на Canvas.

Напишете променлива SerializeField за текста за рестартиране на играта. След това, за да гарантираме, че текстът винаги е деактивиран в началото на играта, ние пишем в метода Старт restartGameText.enabled = false;.

След това създайте нов метод, наречен RestartDisplay, който ще активира компонента Text Mesh Pro-Text (UI), така че текстът да се показва. Също подобно на нулевата проверка, ние използваме Assert, за да покажем съобщение за грешка в случай, че gameObject или компонентът не са включени.

Тъй като имаме методите GameOverDisplay и RestartDisplay, които ще бъдат извикани в скрипта на Player, нека създадем нов метод (GameOverSequence) в UIManager, за да поставите двата предишни метода вътре за улеснение при бъдещо отстраняване на грешки и четливост. Уверете се, че методът GameOverSequence се извиква в класа Player, когато играчът има 0 живота.

public void GameOverSequence() {
     GameOverDisplay();
     RestartDisplay();
}

Плъзнете текстовия обект за рестартиране на играта в полето на UIManager.

За да рестартирате сцената, най-добре е да създадете друг скрипт, наречен GameManager, защото той ще управлява състоянието на нашата игра.

UIManager е само за потребителския интерфейс. В скрипта GameManager ще използваме UnityEngine.SceneManagement за зареждане на активната сцена. Създайте частен isGameOver bool, за да можем да разберем кога играта е приключила.

След това създайте нов метод GameOver, който задава isGameOver на true.

В метода за актуализиране пишем оператор if, който казва, че ако играчът натисне клавиша Rи играта свърши, презареждане на активната сцена. Ако проверихме само дали играчът е натиснал клавиша R без променлива gameOver, играчът ще може да рестартира нивото по всяко време и да загуби прогрес.

За да можете да презаредите сцената, отидете на ФайлНастройки за изграждане и щракнете върху Добавяне на отворена сцена и се уверете, че сцената е отметната.

Отидете до вашия скрипт UIManager и създайте манипулатор за компонента GameManager. След това в метода GameOverSequence извикваме GameOver метода на GameManager, така че isGameOver bool е зададен на true и тогава играчът ще може да презареди нивото, ако натисне клавиша R .

Можем да рестартираме нивото, когато играчът умре!