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.
Wyzwanie
ŁatwyDodaj menu do gry na łące: napisz Start() w pliku Menu.cs.
- Ukryj
menuPanelihelpPanelza pomocąSetActive(false). menuButtonwyświetla menu i ustawiamover.enabled = false;resumeButtonukrywa je i ustawiamover.enabled = true.helpButtonukrywa menu i wyświetla pomoc;backButtonrobi 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
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w bankuPoćwicz samodzielnie: Edytor online Unity