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.
Wyzwanie
ŁatwyGra 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
menuPanelihelpPanelbyły ukryte. menuButtonotwierało panel menu, a jegoresumeButtongo zamykało.helpButtonna panelu menu zamieniało panel menu na panel pomocy, abackButtonna panelu pomocy przełączało z powrotem.- Gdy menu jest otwarte, gracz nie może się poruszać: skrypt
moverjest 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
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski 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 banku