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.
Desafio
FácilO 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,
menuPanelehelpPanelfiquem ocultos. menuButtonabra o painel do menu, e seuresumeButtono feche.helpButton, no painel do menu, troque o painel do menu pelo painel de ajuda, ebackButton, no painel de ajuda, faça a troca de volta.- Enquanto o menu estiver aberto, o jogador não poderá andar: o script
moverserá 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
}
}
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
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro4Cenas e Fases
Carregar uma CenaReiniciar a FasePróxima FaseManter entre CenasRevisão: Seleção de Fases10Projeto: Jogo de Plataforma 3D
O PercursoPlataformas Móveis2Botõ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 banco