So starten Sie ein Spiel in Unity neu

Das Neustarten eines Spiels ist eine gängige Funktion in Unity-Spielen, die es Spielern ermöglicht, den Spielstatus zurückzusetzen und von vorne zu beginnen. Dies ist in Szenarien wie Game-Over-Bildschirmen, Levelwiederholungen oder Übungsläufen nützlich. In Unity wird ein Spiel normalerweise neu gestartet, indem die aktuelle Szene neu geladen wird, wodurch alle Objekte und Variablen auf ihre Standardzustände zurückgesetzt werden. In diesem Tutorial lernen wir, wie man eine Funktion zum Neustarten eines Spiels mithilfe des Szenenverwaltungssystems von Unity implementiert.

Schritt 1: Einrichten der Szene

Beginnen wir mit der Erstellung einer einfachen Unity-Szene:

  1. Erstellen Sie ein neues Unity-Projekt.
  2. Fügen Sie ein 3D-Objekt (z. B. einen Würfel) hinzu, um einen Spieler oder ein Spielelement darzustellen.
  3. Richten Sie einige Spielelemente ein, beispielsweise Hindernisse oder Sammelobjekte.
  4. Speichern Sie die Szene, indem Sie zu Datei > Speichern unter gehen und ihr einen Namen wie Hauptszene geben.

Schritt 2: Szenenverwaltung importieren

Unitys SceneManager wird zum Laden und Neuladen von Szenen verwendet. Um es zu verwenden, müssen wir den Namespace UnityEngine.SceneManagement in unsere Skripte aufnehmen.

Schritt 3: Schreiben des Neustartskripts

Erstellen Sie als Nächstes ein Skript, das die aktuelle Szene neu lädt:

  1. Klicken Sie mit der rechten Maustaste in den Ordner Assets und wählen Sie Erstellen > C#-Skript. Nennen Sie es RestartGame.
  2. Öffnen Sie das Skript in Ihrem Code-Editor und fügen Sie den folgenden Code hinzu:
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
    }
}

Schritt 4: Hinzufügen des Neustartskripts zu einem Objekt

So machen Sie das Skript funktionsfähig:

  1. Fügen Sie das Skript RestartGame an ein GameObject in der Szene an (z. B. ein leeres GameObject).
  2. Speichern Sie die Szene und drücken Sie Play. Drücken Sie während des Spiels die Taste R, um die Szene neu zu starten.

Schritt 5: Hinzufügen einer Neustart-Schaltfläche

Bei Spielen mit Benutzeroberfläche können Sie eine Schaltfläche zum Neustarten des Spiels hinzufügen:

  1. Klicken Sie in der Hierarchie mit der rechten Maustaste und wählen Sie UI > Button, um Ihrer Szene eine Schaltfläche hinzuzufügen.
  2. Passen Sie den Schaltflächentext so an, dass er "Restart" lautet, indem Sie das untergeordnete Objekt Text auswählen und seinen Inhalt im Inspektor ändern.
  3. Fügen Sie das Neustartskript an ein GameObject in der Szene an, falls Sie dies nicht bereits getan haben.
  4. Wählen Sie die Schaltfläche in der Hierarchie aus, gehen Sie zum Abschnitt OnClick in der Schaltflächenkomponente und klicken Sie auf das Symbol +.
  5. Ziehen Sie das GameObject mit dem Skript RestartGame in das leere Feld.
  6. Wählen Sie im Dropdown-Menü RestartGame > RestartCurrentScene.

Wenn Sie jetzt während des Spiels auf die Schaltfläche klicken, wird das Spiel neu gestartet.

Optional: Spielerfortschritt zurücksetzen

Wenn Ihr Spiel den Fortschritt des Spielers verfolgt (z. B. Punktestand oder Gesundheit), stellen Sie sicher, dass diese Werte beim Neustart des Spiels zurückgesetzt werden. Beispiel:

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;
    }
}

Stellen Sie sicher, dass alle Variablen, die zurückgesetzt werden müssen, in der Methode Start oder an der entsprechenden Stelle in Ihren Skripten initialisiert werden.

Testen der Neustartfunktion

So testen Sie Ihre Neustartfunktion:

  1. Spielen Sie die Szene ab und interagieren Sie mit den Spielelementen (z. B. bewegen Sie den Spieler, sammeln Sie Gegenstände ein oder verlieren Sie Gesundheit).
  2. Drücken Sie die Taste R oder klicken Sie auf die Schaltfläche „Neustart“, um die Szene zurückzusetzen.
  3. Überprüfen Sie, ob die Szene auf ihren ursprünglichen Zustand zurückgesetzt wird, einschließlich aller Variablen und Objekte.

Optionale Erweiterungen

Hier sind einige zusätzliche Ideen zur Verbesserung Ihrer Neustartfunktion:

  • Game-Over-Bildschirm: Zeigt einen Game-Over-Bildschirm mit einer Neustartoption an, wenn der Spieler verliert.
  • Levelauswahl: Bietet Optionen zum Neustarten des aktuellen Levels oder zur Rückkehr zu einem Hauptmenü.
  • Speichern und Laden: Integrieren Sie die Speicher- und Ladefunktion, um den Spielerfortschritt über Neustarts hinweg beizubehalten.
  • Bestätigungsdialog: Fügen Sie vor dem Neustart einen Bestätigungsdialog hinzu, um versehentliche Neustarts zu verhindern.

Abschluss

Wir haben mithilfe des SceneManagers eine Neustartfunktion in Unity implementiert. Diese Funktion ermöglicht es Spielern, das Spiel einfach zurückzusetzen, was sie zu einer grundlegenden Funktion für jedes Spiel macht. Experimentieren Sie mit UI-Schaltflächen, benutzerdefinierten Skripten und Spielerfortschritts-Resets, um Ihr Spielneustartsystem weiter zu verfeinern.