Trovare per nome
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 56 di 85.
GameObject.Find("Player") cerca nella scena un oggetto attivo con esattamente quel nome e lo restituisce, oppure restituisce null se non ne trova nessuno. Evita di collegare un campo nell’Inspector, ma ha un costo: esamina ogni oggetto della scena. Quindi chiamalo una volta, in Start(), e conserva il risultato in un campo. Questa telecamera di sicurezza trova il Player all’avvio del gioco e lo osserva a ogni fotogramma:
private Transform player;
void Start()
{
player = GameObject.Find("Player").transform;
}
void Update()
{
transform.LookAt(player);
}Il nome deve corrispondere esattamente, comprese maiuscole e spazi: "player" o "Player " non trova nulla. Find ignora anche gli oggetti inattivi (nascosti). Se la ricerca non riesce, restituisce tranquillamente null e l’errore compare alla riga successiva che usa il risultato: in questo caso, .transform genera un’eccezione NullReferenceException. Un percorso come "Car/Wheel" trova Wheel, che è un figlio di Car.
Sfida
MedioIl rover segnala quanto dista dal suo obiettivo.
- In
Start(), impostagoal = GameObject.Find("Goal").transform;. - In
Update(), quando viene premutoInput.GetKeyDown(KeyCode.Space), registra"Distance to goal: " + Vector3.Distance(transform.position, goal.position).
Premi «Gioca» e premi la barra spaziatrice: la Console mostra Distance to goal: 5. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class Beacon : MonoBehaviour
{
private Transform goal;
void Start()
{
// Trova l'oggetto chiamato Goal e conserva il suo Transform in goal.
}
void Update()
{
// Space: registra la distanza dall'obiettivo nel log.
}
}
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