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:

  1. Utwórz nowy projekt Unity.
  2. Dodaj obiekt 3D (np. Cube), aby reprezentować gracza lub element gry.
  3. Przygotuj elementy rozgrywki, takie jak przeszkody lub przedmioty do zebrania.
  4. 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ę:

  1. W folderze Assets kliknij prawym przyciskiem myszy i wybierz opcję Utwórz > Skrypt C#. Nadaj mu nazwę RestartGame.
  2. 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ł:

  1. Dołącz skrypt RestartGame do obiektu GameObject w scenie (np. pustego obiektu GameObject).
  2. 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:

  1. W hierarchii kliknij prawym przyciskiem myszy i wybierz UI > Przycisk, aby dodać przycisk do sceny.
  2. Możesz dostosować tekst przycisku, tak aby brzmiał "Restart", wybierając obiekt podrzędny Text i zmieniając jego zawartość w Inspektorze.
  3. Jeśli jeszcze tego nie zrobiłeś, dołącz skrypt ponownego uruchomienia do obiektu GameObject w scenie.
  4. Wybierz przycisk w hierarchii, przejdź do sekcji OnClick w komponencie Przycisk i kliknij ikonę +.
  5. Przeciągnij GameObject ze skryptem RestartGame do pustego pola.
  6. 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:

  1. Odtwórz scenę i wejdź w interakcję z elementami gry (np. poruszaj graczem, zbieraj przedmioty lub trać zdrowie).
  2. Naciśnij klawisz R lub kliknij przycisk ponownego uruchomienia, aby zresetować scenę.
  3. 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.