Menu
CoddyTech

Trova per nome

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 42 di 67.

GameObject.Find("Player") cerca nella scena un oggetto attivo con esattamente quel nome e lo restituisce, oppure restituisce null se non ce n'è nessuno. Evita di collegare un campo nell'Inspector, ma ha un costo: esamina ogni oggetto della scena. Quindi chiamalo una sola 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 frame:

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). Una ricerca non riuscita restituisce null senza avvisare, e l'errore si manifesta alla riga successiva che usa il risultato: qui, .transform genera NullReferenceException. Un percorso come "Car/Wheel" trova Wheel, che è un elemento figlio di Car.

challenge icon

Sfida

Medio

Il rover comunica quanto è lontano dal suo obiettivo.

  • In Start(), trova l'oggetto chiamato Goal e conserva il suo Transform in goal.
  • Ogni volta che premi Space, registra la distanza dal rover all'obiettivo, come Distance to goal: 5.

L'obiettivo può muoversi, quindi misura la distanza nel momento in cui premi Space.

Premi Play, fai clic sul gioco e premi Space, quindi Check.

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.
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di scripting in Unity