I riferimenti battono la ricerca
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 59 di 85.
Uno script può raggiungere un altro oggetto in quattro modi: un campo impostato nell'Inspector, una ricerca di GameObject.Find per nome, una ricerca per tag oppure una ricerca di FindAnyObjectByType per tipo. Per un oggetto presente nella scena fin dall'inizio, il codice Unity usa il campo dell'Inspector per tre motivi:
- Velocità. Il riferimento viene assegnato prima dell'avvio del gioco. Ogni ricerca esamina gli oggetti della scena e una ricerca in
Update()lo fa a ogni frame. - Sicurezza. Un nome in una stringa non è più valido quando qualcuno rinomina l'oggetto: Find restituisce
nulle l'errore compare più tardi, sulla riga che lo usa. Un campo dell'Inspector vuoto genera UnassignedReferenceException, che indica il campo e lo script. - Chiarezza. L'Inspector mostra da cosa dipende uno script. Una chiamata a Find lo nasconde nel codice.
// impostato una sola volta nell'Inspector: nessuna ricerca e la rinomina non cambia nulla
[SerializeField] private Transform door;
// cercato a ogni frame e null dopo che door viene rinominata
void Update()
{
Transform d = GameObject.Find("Door").transform;
}Le ricerche hanno la loro utilità: per gli oggetti che esistono solo quando il gioco è in esecuzione, come uno generato durante il gioco, e per gli script che devono funzionare in qualsiasi scena. Anche in questi casi, esegui la ricerca una volta in Start() e conserva il risultato in un campo.
Provalo tu
Questa lezione non include una sfida di codice.
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