Menu
CoddyTech

Pannelli attivi e disattivi

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 9 di 60.

Un pannello è un'immagine dell'interfaccia utente, spesso estesa su tutto lo schermo, con pulsanti e testi al suo interno. 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 da 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. Non assegnare lo script che apre un pannello a quel pannello: un GameObject inattivo non esegue Start() né Update(), quindi uno script su un pannello salvato come nascosto non collegherebbe mai i suoi pulsanti. Il Canvas o un oggetto gestore di gioco, che rimangono attivi, sono luoghi adatti per lo script. mapPanel.activeSelf indica se il pannello è attivo, quindi mapPanel.SetActive(!mapPanel.activeSelf) ne inverte lo stato.

challenge icon

Sfida

Facile

Aggiungi un menu al gioco del prato: scrivi Start() in Menu.cs.

  1. Nascondi menuPanel e helpPanel con SetActive(false).
  2. menuButton mostra il menu e imposta mover.enabled = false; resumeButton lo nasconde e imposta mover.enabled = true.
  3. helpButton nasconde il menu e mostra la schermata di aiuto; backButton fa l'opposto.

Premi «Gioca» e apri il menu: il giocatore non può camminare finché non selezioni «Riprendi». 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
    }
}

Tutte le lezioni di Creare veri giochi

Esercitati da solo: Playground Unity