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 60.

Um painel é uma imagem da interface do usuário, muitas vezes esticada para ocupar a tela inteira, com botões e textos como elementos 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 que esteja atrás dela, então não é possível pressionar os botões atrás de um painel que ocupa a tela inteira. Este mapa é aberto por um botão no canto e fechado por um botão no próprio 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 as cenas costumam ser salvas com eles ativos, e Start() os oculta. Mantenha fora do painel o script que o abre: um GameObject inativo não executa Start() nem Update(), então um script em um painel salvo oculto nunca configuraria seus botões. O Canvas ou um objeto gerenciador do jogo, que permanecem ativos, são bons lugares para esse script. mapPanel.activeSelf informa se o painel está ativo, então mapPanel.SetActive(!mapPanel.activeSelf) alterna seu estado.

challenge icon

Desafio

Fácil

Adicione um menu ao jogo do prado: escreva Start() em Menu.cs.

  1. Oculte menuPanel e helpPanel com SetActive(false).
  2. menuButton mostra o menu e define mover.enabled = false; resumeButton o oculta e define mover.enabled = true.
  3. helpButton oculta o menu e mostra a ajuda; backButton faz o contrário.

Pressione “Jogar” e abra o menu: o jogador não consegue andar até pressionar Retomar. Depois, pressione “Verificar”.

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 os botões Menu, Resume, Help e Back
    }
}

Todas as lições de Criando Jogos de Verdade

Pratique por conta própria: Playground de Unity