In diesem Beitrag zeige ich dir wie du ein Pause Menü erstellen kannst. Wichtig hierbei ist, dass du dir überlegst auf welche Weise dein Spiel überhaupt pausiert werden soll. Möglichkeiten hierfür sind das Drücken einer Taste wie z.B. die Escape Taste oder das Selektieren eines Buttons auf der Benutzeroberfläche.
Unity Pause Menü erstellen
Der Ausgangspunkt ist somit deine Taste oder dein Button. Danach rufst du eine Methode auf die für das Ausführen der Pause zuständig ist. => public void Pause(); Innerhalb der Methode pausiert du nun dein Spiel, dies kannst mit Hilfe der Time.timeScale = 0f; machen.
Starte nun dein Spiel und drücke den Auslöser für die Pause. Du siehst, jetzt friert dein Spiel ein und ist somit pausiert. Der nächste Schritt ist jetzt das Deaktivieren der Pause. Hierzu musst du den Wert Time.timeScale wieder auf 1f setzen. Erstelle dir am besten eine Methode für Resume();
Hast du jetzt beispielsweise einen einzigen Button oder Taste die für das Aktivieren und Deaktivieren der Pause zuständig sind, dann lege dir eine Methode PauseOrResume an und überprüfe ob dein Spiel derzeit Pausiert ist. Sollte es der Fall sein wird das Gegenteil ausgeführt. => private bool gamePaused;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PauseScript : MonoBehaviour {
public GameObject pauseText;
public bool gamePaused;
// Use this for initialization
void Start () {
gamePaused = false;
}
// Update is called once per frame
void Update ()
{
// Taste für Pause erkennen
if(Input.GetButtonDown("Pause"))
{
print("pause wurde gedrückt");
// Methode PauseOrResume
PauseOrResume();
}
}
public void PauseOrResume()
{
// Ist das Spiel derzeit pausiert?
if(gamePaused)
{
// Pause ist aktiviert => Beende die Pause
Resume();
// Spiel jetzt pausiert => Variable ändern
gamePaused = false;
}
else
{
// Pause nicht aktiviert => Starte die Pause
Pause();
// Spiel nicht pausiert => Variable ändern
gamePaused = true;
}
}
public void Pause()
{
// Spiel einfrieren
Time.timeScale = 0f;
// Pause text aktivieren
pauseText.SetActive(true);
}
public void Resume()
{
// Spiel fortsetzen
Time.timeScale = 1f;
// Pause text ausblenden
pauseText.SetActive(false);
}
}