Riferimenti nell'Inspector
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 43 di 85.
Un campo può contenere un altro oggetto. Assegnagli un tipo come Transform o GameObject e nell’Inspector vedrai uno slot vuoto, che puoi riempire trascinandovi sopra un oggetto dalla Hierarchy. Questo script della telecamera segue l’oggetto trascinato in player, rimanendo 3 unità sopra e 6 dietro di esso:
public Transform player;
void Update()
{
transform.position = player.position + new Vector3(0, 3, -6);
}Uno slot lasciato vuoto mostra None e, a ogni frame, la prima riga che lo usa genera un’eccezione: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. La riga successiva del messaggio dice cosa fare: You probably need to assign the player variable of the CameraFollow script in the inspector. Indica il campo e lo script, così sai quale slot riempire.
Alcuni script dovrebbero funzionare anche con lo slot vuoto. Unity fa sì che uno slot vuoto sia uguale a null, quindi uno script di questo tipo verifica prima di usarlo. Se racchiudi la riga in Update() tra if (player != null), una telecamera senza player rimane dov’è invece di generare un’eccezione.
Sfida
MedioInvia ogni guardia al posto indicato dal suo Inspector.
- Aggiungi il campo
public Transform post;. Lo slot di Guard1 contiene Post1; quello di Guard2 è vuoto. - In
Update(), quandopost == null, eseguireturn;così una guardia senza posto resta ferma. - Poi spostala con
Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).
Premi «Gioca»: Guard1 raggiunge il suo posto e Guard2 aspetta. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Guard : MonoBehaviour
{
// post: il Transform verso cui si dirige questa guardia, impostato nell'Inspector
public float speed = 2f;
void Update()
{
// Cammina verso post alla velocità speed. Una guardia con uno slot post vuoto rimane ferma.
}
}
Tutte le lezioni di Fondamenti di scripting in Unity
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity