Conectar en el Inspector
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 8 de 56.
Un botón también se puede conectar en el Inspector, sin usar AddListener. La lista On Click () del Button empieza vacía. El botón + añade una fila; arrastra a la fila, en el espacio para el objeto, el objeto que contiene el script, y el menú desplegable de funciones muestra los componentes de ese objeto, cada uno con sus métodos públicos. Elige Jukebox > NextTrack y cada clic llamará a 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]);
}
}El menú desplegable muestra los métodos que son public, devuelven void y no reciben ningún parámetro o reciben uno de tipo int, float, string, bool u Object, cuyo valor configuras en la fila. Un NextTrack private no aparece en la lista, así que no se puede elegir. La fila almacena el método por su nombre: cambia el nombre de NextTrack a SkipTrack y la fila mostrará <Missing Jukebox.NextTrack>, y los clics no harán nada, sin que aparezca ningún error en la Console.
Las filas del Inspector son adecuadas para los botones colocados en la escena: cualquiera del equipo puede ver y cambiar lo que ejecuta un botón sin abrir un script. AddListener en el código es adecuado para los botones creados mientras se ejecuta el juego y para las llamadas que pasan un valor de una variable; además, el compilador detecta si se cambia el nombre de un método. Los listeners añadidos desde el código nunca aparecen en la lista On Click (), así que un botón conectado de ambas formas ejecutará ambas llamadas.
Desafío
FácilEl puente levadizo del castillo tiene tres botones, conectados en el Inspector al script Drawbridge de BridgeControl. Ninguno funciona todavía. Selecciona RaiseButton, LowerButton y LampButton en la Hierarchy y lee cada fila On Click (): allí se indica el método que llama el clic. Haz que funcionen los tres cambiando solo Drawbridge.cs:
- Uno de los métodos ya está escrito con otro nombre. Cámbiale el nombre por el que indica su fila.
- Al levantar el puente,
bridgegira 70 grados alrededor de x (sulocalRotation) y muestraBridge: upenstatusText. - El botón de la lámpara enciende
warningLampcuando está apagada y la apaga cuando está encendida.
Pulsa Play, prueba todos los botones y luego pulsa Check.
Pruébalo tú mismo
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 lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Creación de juegos reales
1Texto en pantalla
Canvas y textoMuestra la puntuaciónDa formato a los númerosUn temporizador de cuenta regresivaRepaso: velocímetro4Escenas y niveles
Cargar una escenaReiniciar el nivelSiguiente nivelConservar entre escenasRepaso: selección de nivel10Proyecto: plataformas 3D
El recorridoPlataformas móviles2Botones y pantallas
Botones y onClickLambdasConectar en el InspectorPaneles activados y desactivadosBarras de saludRepaso: tienda de mejoras5Guardar con PlayerPrefs
Guardar un númeroCargar con un valor predeterminadoPuntuación más altaGuardar ajustesRepaso: monedas en el banco3El gestor del juego
Un solo script ejecuta el juegoEl SingletonEstados del juegoActivar el estadoRepaso: gestor de rondas6Proyecto: corredor infinito
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entrada