Conectando no Inspector
Parte da seção Criando Jogos de Verdade do Journey de Unity da Coddy. Lição 8 de 60.
Um botão também pode ser conectado 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 para 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 é listado, então não pode ser escolhido. 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 enquanto o jogo está em execução e para chamadas que passam um valor de uma variável, e o compilador detecta se um método foi renomeado nesse caso. Listeners adicionados pelo código nunca aparecem na lista On Click (), então um botão conectado das duas formas chama ambos.
Desafio
FácilFaça os três botões da ponte levadiça funcionarem em Drawbridge.cs.
- A linha On Click () de cada botão chama
Raise,LowerouToggleLamp. RenomeieLowerBridgeparaLower. - Escreva
public void Raise():bridge.localRotationgira 70 graus em torno de x, estatusTextexibeBridge: up. - Escreva
public void ToggleLamp(): ele ligawarningLampquando está desligado e desliga quando está ligado.
Pressione “Jogar”: cada botão faz o que deve. Depois, pressione “Verificar”.
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";
}
}
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