Menu
CoddyTech

Panels ein- und ausblenden

Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 9 von 56.

Ein Panel ist ein UI-Bild, das oft über den ganzen Bildschirm gestreckt ist und Schaltflächen und Texte als untergeordnete Elemente enthält. SetActive(false) auf dem Panel blendet es mitsamt allem darin aus, und seine Schaltflächen können nicht angeklickt werden, solange es ausgeblendet ist. Solange es angezeigt wird, fängt sein Bild die Klicks ab, die für Elemente darunter gedacht sind. Daher können die Schaltflächen hinter einem Vollbild-Panel nicht gedrückt werden. Diese Karte wird über eine Schaltfläche in der Ecke geöffnet und über eine Schaltfläche auf der Karte geschlossen:

public GameObject mapPanel;
public Button mapButton;
public Button closeButton;

void Start()
{
    mapPanel.SetActive(false);
    mapButton.onClick.AddListener(() => mapPanel.SetActive(true));
    closeButton.onClick.AddListener(() => mapPanel.SetActive(false));
}

Panels lassen sich leichter bearbeiten, wenn sie angezeigt werden. Deshalb werden Szenen oft mit eingeblendeten Panels gespeichert, die dann von Start() ausgeblendet werden. Platziere das Skript, das ein Panel öffnet, nicht auf diesem Panel: Ein inaktives GameObject erhält weder Start() noch Update(). Ein Skript auf einem Panel, das ausgeblendet gespeichert wurde, würde seine Schaltflächen also nie einrichten. Das Canvas oder ein Game-Manager-Objekt, die aktiv bleiben, eignen sich gut dafür. mapPanel.activeSelf gibt an, ob das Panel aktiv ist. Mit mapPanel.SetActive(!mapPanel.activeSelf) wird sein Zustand umgeschaltet.

challenge icon

Aufgabe

Einfach

Das Wiesenspiel braucht ein Menü. Menu.cs befindet sich auf dem Canvas (HUD), und die Szene verknüpft seine Felder. Beide Bereiche sind in der Szene aktiviert, damit sie sich einfach bearbeiten lassen. Schreibe Start() so, dass:

  • Beim Start des Spiels menuPanel und helpPanel ausgeblendet sind.
  • menuButton das Menü öffnet und der zugehörige resumeButton es schließt.
  • helpButton auf dem Menübereich diesen durch den Hilfebereich ersetzt und backButton auf dem Hilfebereich zurückwechselt.
  • Der Spieler nicht laufen kann, solange das Menü geöffnet ist: Das Skript mover wird beim Öffnen des Menüs deaktiviert und wieder aktiviert, wenn Resume es schließt.

Drücke Play, laufe herum, öffne das Menü und dessen Hilfe und drücke dann Check.

Probier es selbst

using UnityEngine;
using UnityEngine.UI;

public class Menu : MonoBehaviour
{
    public GameObject menuPanel;
    public GameObject helpPanel;
    public Button menuButton;
    public Button resumeButton;
    public Button helpButton;
    public Button backButton;
    public PlayerMover mover;

    void Start()
    {
        // Beide Panels ausblenden und dann Menu, Resume, Help und Back verknüpfen
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Echte Spiele entwickeln