Menu
CoddyTech

Rechercher par nom

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 56 sur 85.

GameObject.Find("Player") recherche dans la scène un objet actif portant exactement ce nom et le renvoie, ou renvoie null s’il n’y en a aucun. Cela évite de relier un champ dans l’Inspector, mais a un coût : la méthode parcourt tous les objets de la scène. Appelez-la donc une seule fois, dans Start(), et conservez le résultat dans un champ. Cette caméra de sécurité trouve le Player au démarrage du jeu et le surveille à chaque image :

private Transform player;

void Start()
{
    player = GameObject.Find("Player").transform;
}

void Update()
{
    transform.LookAt(player);
}

Le nom doit correspondre exactement, majuscules et espaces compris : "player" ou "Player " ne trouve rien. Find ignore également les objets inactifs (masqués). Une recherche infructueuse renvoie silencieusement null, et l’erreur apparaît à la ligne suivante qui utilise le résultat : ici, .transform déclenche une NullReferenceException. Un chemin tel que "Car/Wheel" trouve Wheel, qui est un enfant de Car.

challenge icon

Défi

Moyen

Le rover indique à quelle distance se trouve son objectif.

  1. Dans Start(), définis goal = GameObject.Find("Goal").transform;.
  2. Dans Update(), lorsque Input.GetKeyDown(KeyCode.Space) est détecté, affiche "Distance to goal: " + Vector3.Distance(transform.position, goal.position).

Appuie sur « Jouer » puis sur Espace : la Console affiche Distance to goal: 5. Ensuite, appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Beacon : MonoBehaviour
{
    private Transform goal;

    void Start()
    {
        // Trouve l’objet nommé Goal et conserve son Transform dans goal.
    }

    void Update()
    {
        // Space : affiche la distance jusqu’à goal dans la console.
    }
}

Toutes les leçons de Les bases du scripting dans Unity

Entraînez-vous par vous-même : Playground Unity