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.
Défi
MoyenChaque 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
Transformnommépost. - Un garde se rend à la position de son poste à la vitesse de
speedunité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.
}
}
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
1Votre premier script
Bonjour, UnityPlacez le cubeBouger à chaque imageTourner chaque secondeDirigez avec les touchesRécapitulatif : conduisez le cube4Vecteurs
Addition de vecteursDirectionsEspaces local et mondeVitesse diagonaleDistance entre les objetsVector3 est une structRécapitulatif : pilote de drone7Projet : Attrape l’étoile
L’attrapeurUne étoile qui tombe2L’inspecteur
Champs de l’inspecteurSerializeFieldNombres flottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur5Transformations et hiérarchie
Parents et enfantsÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : Lune en orbite8Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que FindLe null de UnityRécapitulatif : la pièce la plus proche11Projet : Esquivez les blocs
Le coureurBlocs qui tombent6GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur