Conectando no Inspector
Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 8 de 56.
Um botão também pode ser configurado no Inspector, sem nenhum AddListener. A lista On Click () do Button começa vazia. O botão + adiciona uma linha; arraste o objeto que contém o script até o campo de objeto da linha, e o menu suspenso de funções lista os componentes desse objeto, cada um com seus métodos públicos. Escolha Jukebox > NextTrack, e cada clique chama este método:
public class Jukebox : MonoBehaviour
{
public string[] tracks;
private int current;
public void NextTrack()
{
current = (current + 1) % tracks.Length;
Debug.Log("Now playing: " + tracks[current]);
}
}O menu suspenso lista métodos que são public, retornam void e não recebem parâmetros ou recebem um int, float, string, bool ou Object, cujo valor você define na linha. Um NextTrack privado não aparece na lista, então não pode ser selecionado. A linha armazena o método pelo nome: renomeie NextTrack para SkipTrack e a linha exibirá <Missing Jukebox.NextTrack>, e os cliques não farão nada, sem erro no Console.
As linhas no Inspector são adequadas para botões colocados na cena: qualquer pessoa da equipe pode ver e alterar o que um botão chama sem abrir um script. AddListener no código é adequado para botões criados durante a execução do jogo e para chamadas que passam um valor de uma variável, e o compilador detecta se um método foi renomeado nesse caso. Os listeners adicionados pelo código nunca aparecem na lista On Click (), então um botão configurado das duas formas chama ambos.
Desafio
FácilA ponte levadiça do castelo tem três botões, conectados no Inspector ao script Drawbridge em BridgeControl. Nenhum deles funciona ainda. Selecione RaiseButton, LowerButton e LampButton na Hierarchy e leia cada linha On Click (): ela indica o método chamado pelo clique. Faça os três funcionarem alterando somente Drawbridge.cs:
- Um dos métodos já está escrito, com outro nome. Dê a ele o nome indicado na linha correspondente.
- Levantar gira
bridgeem 70 graus em torno de x (sualocalRotation) e exibeBridge: upemstatusText. - O botão da lâmpada liga
warningLampquando ela está desligada e a desliga quando está ligada.
Pressione Play, teste cada botão e depois pressione Check.
Experimente você mesmo
using UnityEngine;
using TMPro;
public class Drawbridge : MonoBehaviour
{
public Transform bridge;
public TMP_Text statusText;
public GameObject warningLamp;
public void LowerBridge()
{
bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
statusText.text = "Bridge: down";
}
}
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