Referencias en el Inspector
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 29 de 67.
Un campo puede contener otro objeto. Asígnale un tipo como Transform o GameObject, y el Inspector muestra un espacio vacío que puedes llenar arrastrando un objeto desde la Hierarchy hasta él. Este script de cámara sigue al objeto que se haya arrastrado a player, manteniéndose 3 unidades por encima y 6 por detrás:
public Transform player;
void Update()
{
transform.position = player.position + new Vector3(0, 3, -6);
}Un espacio vacío muestra None, y la primera línea que lo usa genera, en cada fotograma: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. La siguiente línea del mensaje indica qué hacer: You probably need to assign the player variable of the CameraFollow script in the inspector. Nombra el campo y el script, para que sepas qué espacio debes llenar.
Algunos scripts también deberían funcionar con el espacio vacío. Unity hace que un espacio vacío sea igual a null en una comparación, así que ese tipo de script comprueba el valor antes de usarlo. Si pones if (player != null) alrededor de la línea en Update(), una cámara sin jugador se queda donde está en lugar de generar un error.
Desafío
IntermedioCada guardia camina hasta su propio puesto. En la escena, el Inspector de Guard1 coloca el objeto Post1 en un campo llamado post. El puesto de Guard2 aún no está configurado, así que su espacio post está vacío.
- Añade al script Guard un campo
Transformllamadopost. - Un guardia camina hasta la posición de su puesto a una velocidad de
speedunidades por segundo y se detiene allí, incluso si el puesto se mueve después. - Un guardia cuyo espacio para el puesto está vacío se queda donde está, sin que se produzca un error.
Pulsa Play, selecciona cada guardia en la Jerarquía para ver su espacio Post y, después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
public class Guard : MonoBehaviour
{
// post: el Transform hacia el que camina este guardia, configurado en el Inspector
public float speed = 2f;
void Update()
{
// Camina hacia post a la velocidad speed. Un guardia sin un post asignado permanece en su sitio.
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos de scripting en Unity
1Tu primer script
Hola, UnityColoca el cuboMuévete en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo4Vectores
Sumar vectoresDireccionesEspacio local y globalVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron7Proyecto: Atrapa la estrella
El atrapadorUna estrella fugaz10El ciclo de vida de los scripts
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vida2El Inspector
Campos del InspectorSerializeFieldNúmeros decimales y MathfAtributos del InspectorRepaso: Ascensor5Transformaciones y jerarquía
Padres e hijosEscalaMirar objetosMoverse hacia un puntoRepaso: Luna en órbita8Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias superan a FindEl valor nulo de UnityRepaso: la moneda más cercana11Proyecto: Esquiva los bloques
El corredorBloques que caen6GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz