Menu
CoddyTech

Painéis ligados e desligados

Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 9 de 56.

Um painel é uma imagem de UI, geralmente esticada por toda a tela, com botões e textos como filhos. SetActive(false) no painel o oculta junto com tudo o que está dentro dele, e não é possível clicar nos botões enquanto ele está oculto. Enquanto está visível, sua imagem recebe os cliques destinados a qualquer elemento abaixo dela, então não é possível pressionar os botões atrás de um painel em tela cheia. Este mapa é aberto por um botão no canto e fechado por um botão no mapa:

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));
}

É mais fácil editar os painéis quando estão visíveis, então muitas vezes as cenas são salvas com eles ativos, e Start() os oculta. Mantenha o script que abre um painel fora desse painel: um GameObject inativo não recebe Start() nem Update(), então um script em um painel salvo oculto nunca conectaria seus botões. O Canvas ou um objeto gerenciador do jogo, que permanecem ativos, são bons lugares para ele. mapPanel.activeSelf informa se o painel está ativo, então mapPanel.SetActive(!mapPanel.activeSelf) alterna seu estado.

challenge icon

Desafio

Fácil

O jogo do prado precisa de um menu. Menu.cs fica no Canvas (HUD), e a cena vincula seus campos. Ambos os painéis estão ativos na cena, então são fáceis de editar. Escreva Start() para que:

  • Quando o jogo começar, menuPanel e helpPanel fiquem ocultos.
  • menuButton abra o painel do menu, e seu resumeButton o feche.
  • helpButton, no painel do menu, troque o painel do menu pelo painel de ajuda, e backButton, no painel de ajuda, faça a troca de volta.
  • Enquanto o menu estiver aberto, o jogador não poderá andar: o script mover será desativado quando o menu abrir e ativado novamente quando Resume o fechar.

Pressione Play, caminhe, abra o menu e a ajuda e, em seguida, Check.

Experimente você mesmo

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()
    {
        // Oculte os dois painéis e, em seguida, configure Menu, Resume, Help e Back
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Criando jogos de verdade