Jak ponownie uruchomić grę w Unity
Ponowne uruchomienie gry jest powszechną funkcją w grach Unity, umożliwiającą graczom zresetowanie stanu gry i rozpoczęcie od nowa. Jest to przydatne w takich scenariuszach, jak ekrany zakończenia gry, ponowne próby poziomów lub przebiegi treningowe. W Unity ponowne uruchomienie gry odbywa się zazwyczaj poprzez ponowne załadowanie bieżącej sceny, co resetuje wszystkie obiekty i zmienne do ich domyślnych stanów. W tym samouczku nauczymy się, jak zaimplementować funkcję ponownego uruchomienia gry, korzystając z systemu zarządzania scenami Unity.
Krok 1: Przygotowanie sceny
Zacznijmy od utworzenia prostej sceny Unity:
- Utwórz nowy projekt Unity.
- Dodaj obiekt 3D (np. Cube), aby reprezentować gracza lub element gry.
- Przygotuj elementy rozgrywki, takie jak przeszkody lub przedmioty do zebrania.
- Zapisz scenę wybierając Plik > Zapisz jako i nadając jej nazwę, np. ScenaGłówna.
Krok 2: Importowanie zarządzania scenami
Unity's SceneManager jest używany do obsługi ładowania i ponownego ładowania scen. Aby go użyć, musimy uwzględnić przestrzeń nazw UnityEngine.SceneManagement w naszych skryptach.
Krok 3: Pisanie skryptu ponownego uruchomienia
Następnie utwórz skrypt, który przeładuje bieżącą scenę:
- W folderze Assets kliknij prawym przyciskiem myszy i wybierz opcję Utwórz > Skrypt C#. Nadaj mu nazwę RestartGame.
- Otwórz skrypt w edytorze kodu i dodaj następujący kod:
using UnityEngine;
using UnityEngine.SceneManagement;
public class RestartGame : MonoBehaviour
{
void Update()
{
// Check if the player presses the R key to restart the game
if (Input.GetKeyDown(KeyCode.R))
{
RestartCurrentScene();
}
}
// Method to restart the current scene
public void RestartCurrentScene()
{
Scene currentScene = SceneManager.GetActiveScene(); // Get the current scene
SceneManager.LoadScene(currentScene.name); // Reload the scene by its name
}
}
Krok 4: Dodawanie skryptu ponownego uruchomienia do obiektu
Aby skrypt działał:
- Dołącz skrypt RestartGame do obiektu GameObject w scenie (np. pustego obiektu GameObject).
- Zapisz scenę i naciśnij Play. Podczas rozgrywki naciśnij klawisz R, aby ponownie uruchomić scenę.
Krok 5: Dodawanie przycisku ponownego uruchomienia
W przypadku gier z interfejsem użytkownika możesz dodać przycisk umożliwiający ponowne uruchomienie gry:
- W hierarchii kliknij prawym przyciskiem myszy i wybierz UI > Przycisk, aby dodać przycisk do sceny.
- Możesz dostosować tekst przycisku, tak aby brzmiał "Restart", wybierając obiekt podrzędny Text i zmieniając jego zawartość w Inspektorze.
- Jeśli jeszcze tego nie zrobiłeś, dołącz skrypt ponownego uruchomienia do obiektu GameObject w scenie.
- Wybierz przycisk w hierarchii, przejdź do sekcji OnClick w komponencie Przycisk i kliknij ikonę +.
- Przeciągnij GameObject ze skryptem RestartGame do pustego pola.
- Z menu rozwijanego wybierz RestartGame > RestartCurrentScene.
Teraz kliknięcie przycisku podczas rozgrywki spowoduje ponowne uruchomienie gry.
Opcjonalnie: Resetowanie postępu gracza
Jeśli Twoja gra śledzi postęp gracza (np. wynik lub zdrowie), upewnij się, że te wartości są resetowane po ponownym uruchomieniu gry. Na przykład:
using UnityEngine;
public class Player : MonoBehaviour
{
public int score = 0;
public int health = 100;
void Start()
{
// Reset score and health on game start
score = 0;
health = 100;
}
}
Upewnij się, że wszystkie zmienne, które wymagają zresetowania, zostały zainicjowane w metodzie Start lub w odpowiednim miejscu skryptu.
Testowanie funkcji ponownego uruchamiania
Aby przetestować funkcję ponownego uruchamiania:
- Odtwórz scenę i wejdź w interakcję z elementami gry (np. poruszaj graczem, zbieraj przedmioty lub trać zdrowie).
- Naciśnij klawisz R lub kliknij przycisk ponownego uruchomienia, aby zresetować scenę.
- Sprawdź, czy scena została przywrócona do stanu początkowego, łącznie ze wszystkimi zmiennymi i obiektami.
Opcjonalne ulepszenia
Oto kilka dodatkowych pomysłów na udoskonalenie funkcji ponownego uruchamiania:
- Ekran zakończenia gry: Wyświetla ekran zakończenia gry z opcją ponownego uruchomienia w przypadku przegranej.
- Wybór poziomu: Umożliwia wybór opcji ponownego uruchomienia bieżącego poziomu lub powrotu do menu głównego.
- Zapisywanie i wczytywanie: Zintegrowano funkcjonalność zapisywania i wczytywania, aby zachować postępy gracza podczas ponownych uruchomień.
- Okno dialogowe potwierdzenia: Dodaj okno dialogowe potwierdzenia przed ponownym uruchomieniem, aby zapobiec przypadkowym ponownym uruchomieniom.
Wniosek
Wprowadziliśmy funkcję ponownego uruchomienia w Unity za pomocą SceneManager. Ta funkcjonalność pozwala graczom na łatwe resetowanie gry, co czyni ją podstawową funkcją każdej gry. Eksperymentuj z przyciskami interfejsu użytkownika, niestandardowymi skryptami i resetami postępu gracza, aby jeszcze bardziej udoskonalić system ponownego uruchamiania gry.