Menu
CoddyTech

Références dans l’Inspector

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

Un champ peut contenir un autre objet. Donne-lui un type tel que Transform ou GameObject, et l’Inspector affiche un emplacement vide que tu remplis en faisant glisser un objet de la Hierarchy dessus. Ce script de caméra suit l’objet que tu as fait glisser dans player, en restant 3 unités au-dessus et 6 derrière :

public Transform player;

void Update()
{
    transform.position = player.position + new Vector3(0, 3, -6);
}

Un emplacement laissé vide affiche None, et la première ligne qui l’utilise déclenche, à chaque image : UnassignedReferenceException: The variable player of CameraFollow has not been assigned. La ligne suivante du message indique quoi faire : You probably need to assign the player variable of the CameraFollow script in the inspector. Elle nomme le champ et le script, pour que tu saches quel emplacement remplir.

Certains scripts doivent aussi fonctionner lorsque l’emplacement est vide. Unity fait en sorte qu’un emplacement vide soit égal à null ; un tel script vérifie donc sa valeur avant de l’utiliser. Avec if (player != null) autour de la ligne dans Update(), une caméra sans joueur reste là où elle est au lieu de déclencher une erreur.

challenge icon

Défi

Moyen

Chaque garde se rend à son propre poste. Dans la scène, l’inspecteur de Guard1 place l’objet Post1 dans un champ nommé post. Le poste de Guard2 n’est pas encore créé, donc son emplacement post est vide.

  • Ajoute au script Guard un champ Transform nommé post.
  • Un garde se rend à la position de son poste à la vitesse de speed unités par seconde et s’y arrête, même si le poste est déplacé par la suite.
  • Un garde dont l’emplacement du poste est vide reste là où il se trouve, sans erreur.

Appuie sur Play, sélectionne chaque garde dans la Hiérarchie pour voir son emplacement Post, puis clique sur Check.

Essayez vous-même

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post : le Transform vers lequel ce garde se dirige, défini dans l’Inspector
    public float speed = 2f;

    void Update()
    {
        // Se diriger vers le poste à la vitesse speed. Un garde dont l’emplacement post est vide reste sur place.
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

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