Menu
CoddyTech

Włączanie i wyłączanie paneli

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

Panel to obraz UI, często rozciągnięty na cały ekran, którego elementami podrzędnymi są przyciski i tekst. SetActive(false) na panelu ukrywa go wraz z całą zawartością, a gdy jest ukryty, nie można klikać jego przycisków. 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 pełnoekranowym. Ta mapa otwiera się przyciskiem w rogu i zamyka przyciskiem 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. Skrypt otwierający panel umieść poza tym panelem: nieaktywny obiekt GameObject nie wykonuje Start() ani Update(), więc skrypt na panelu zapisanym w stanie ukrytym nigdy nie podłączyłby jego przycisków. Dobrym miejscem na ten skrypt jest Canvas lub obiekt menedżera gry, które pozostają aktywne. mapPanel.activeSelf określa, czy panel jest włączony, więc mapPanel.SetActive(!mapPanel.activeSelf) przełącza jego stan.

challenge icon

Wyzwanie

Łatwy

Gra na łące potrzebuje menu. Menu.cs znajduje się na Canvasie (HUD), a scena ma przypisane do niego pola. Oba panele są włączone w scenie, więc łatwo je edytować. Napisz Start() tak, aby:

  • Po uruchomieniu gry panele menuPanel i helpPanel były ukryte.
  • menuButton otwierało panel menu, a jego resumeButton go zamykało.
  • helpButton na panelu menu zamieniało panel menu na panel pomocy, a backButton na panelu pomocy przełączało z powrotem.
  • Gdy menu jest otwarte, gracz nie może się poruszać: skrypt mover jest wyłączany po otwarciu menu i ponownie włączany, gdy Resume je zamyka.

Naciśnij Play, pochodź, otwórz menu i pomoc, a następnie naciśnij Check.

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 Menu, Resume, Help i Back
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier