Pannelli attivi e disattivi
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 9 di 56.
Un pannello è un'immagine dell'interfaccia utente, spesso estesa su tutto lo schermo, con pulsanti e testi come elementi figlio. SetActive(false) sul pannello lo nasconde insieme a tutto ciò che contiene, e non è possibile fare clic sui suoi pulsanti mentre è nascosto. Quando è visibile, la sua immagine intercetta i clic destinati a qualsiasi elemento sottostante, quindi non è possibile premere i pulsanti dietro un pannello a schermo intero. Questa mappa si apre da un pulsante nell'angolo e si chiude con un pulsante sulla mappa:
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));
}È più facile modificare i pannelli quando sono visibili, quindi spesso le scene vengono salvate con i pannelli attivi e Start() li nasconde. Tieni lo script che apre un pannello fuori da quel pannello: un GameObject inattivo non esegue né Start() né Update(), quindi uno script su un pannello salvato nascosto non collegherebbe mai i suoi pulsanti. Il Canvas o un oggetto game manager, che rimangono attivi, sono posizioni adatte. mapPanel.activeSelf indica se il pannello è attivo, quindi mapPanel.SetActive(!mapPanel.activeSelf) ne inverte lo stato.
Sfida
FacileIl gioco del prato ha bisogno di un menu. Menu.cs si trova sul Canvas (HUD) e la scena collega i suoi campi. Entrambi i pannelli sono attivi nella scena, così è facile modificarli. Scrivi Start() in modo che:
- Quando il gioco inizia,
menuPanelehelpPanelsiano nascosti. menuButtonapra il pannello del menu e il suoresumeButtonlo chiuda.helpButton, sul pannello del menu, sostituisca il pannello del menu con quello dell’aiuto ebackButton, sul pannello dell’aiuto, torni al menu.- Mentre il menu è aperto, il giocatore non può camminare: lo script
moverviene disabilitato quando si apre il menu e riabilitato quando Resume lo chiude.
Premi Gioca, cammina, apri il menu e la relativa schermata di aiuto, poi premi Verifica.
Provalo tu
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()
{
// Nascondi entrambi i pannelli, poi collega Menu, Resume, Help e Back
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro4Scene e livelli
Caricare una scenaRiavviare il livelloLivello successivoMantenere i dati tra le sceneRiepilogo: selezione del livello10Progetto: Platform 3D
Il percorsoPiattaforme mobili2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Corsa infinita
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di input