Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Faça os três botões da ponte levadiça funcionarem em Drawbridge.cs.

  1. A linha On Click () de cada botão chama Raise, Lower ou ToggleLamp. Renomeie LowerBridge para Lower.
  2. Escreva public void Raise(): bridge.localRotation gira 70 graus em torno de x, e statusText exibe Bridge: up.
  3. Escreva public void ToggleLamp(): ele liga warningLamp quando 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

Pratique por conta própria: Playground de Unity