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.
Desafio
FácilAdicione um menu ao jogo do prado: escreva Start() em Menu.cs.
- Oculte
menuPanelehelpPanelcomSetActive(false). menuButtonmostra o menu e definemover.enabled = false;resumeButtono oculta e definemover.enabled = true.helpButtonoculta o menu e mostra a ajuda;backButtonfaz 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
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro2Botões e telas
Botões e onClickLambdasConectando no InspectorPainéis ligados e desligadosBarras de vidaRevisão: Loja de melhorias5Salvando com PlayerPrefs
Salvar um númeroCarregar com um valor padrãoRecordeSalvar configuraçõesRevisão: Moedas no bancoPratique por conta própria: Playground de Unity