Menu
CoddyTech

Włączanie i wyłączanie paneli

Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 9 z 60.

Panel to obraz UI, często rozciągnięty na cały ekran, którego elementami podrzędnymi są przyciski i teksty. SetActive(false) na panelu ukrywa go wraz z całą zawartością, a jego przycisków nie można kliknąć, gdy jest ukryty. Gdy jest widoczny, jego obraz przechwytuje kliknięcia przeznaczone dla elementów pod nim, więc nie można nacisnąć przycisków znajdujących się za panelem zajmującym cały ekran. Ta mapa otwiera się po naciśnięciu przycisku w rogu i zamyka po naciśnięciu przycisku na mapie:

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

Panele łatwiej edytować, gdy są widoczne, dlatego sceny często zapisuje się z włączonymi panelami, a Start() je ukrywa. Nie umieszczaj skryptu otwierającego panel na tym panelu: nieaktywny obiekt GameObject nie uruchamia Start() ani Update(), więc skrypt na panelu zapisanym jako ukryty nigdy nie podłączyłby jego przycisków. Dobrym miejscem na taki skrypt jest Canvas lub obiekt zarządzający grą, które pozostają aktywne. mapPanel.activeSelf informuje, czy panel jest włączony, więc mapPanel.SetActive(!mapPanel.activeSelf) przełącza jego stan.

challenge icon

Wyzwanie

Łatwy

Dodaj menu do gry na łące: napisz Start() w pliku Menu.cs.

  1. Ukryj menuPanel i helpPanel za pomocą SetActive(false).
  2. menuButton wyświetla menu i ustawia mover.enabled = false; resumeButton ukrywa je i ustawia mover.enabled = true.
  3. helpButton ukrywa menu i wyświetla pomoc; backButton robi odwrotnie.

Naciśnij „Graj” i otwórz menu: gracz nie może chodzić, dopóki nie wybierzesz opcji Wznów. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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()
    {
        // Ukryj oba panele, a następnie podłącz przyciski Menu, Resume, Help i Back
    }
}

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier

Poćwicz samodzielnie: Edytor online Unity