Références dans l’Inspector
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 43 sur 85.
Un champ peut contenir un autre objet. Donnez-lui un type tel que Transform ou GameObject, et l’Inspector affiche un emplacement vide que vous remplissez en faisant glisser un objet de la Hierarchy vers cet emplacement. Ce script de caméra suit l’objet que vous avez fait glisser dans player, en restant 3 unités au-dessus et 6 derrière lui :
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, ce qui vous permet de savoir quel emplacement remplir.
Certains scripts doivent aussi fonctionner lorsque l’emplacement est vide. Unity fait en sorte qu’un emplacement vide soit égal à null lors d’une comparaison ; un tel script vérifie donc la valeur avant de l’utiliser. Avec if (player != null) autour de la ligne dans Update(), une caméra sans joueur reste là où elle se trouve au lieu de déclencher une erreur.
Défi
MoyenEnvoyez chaque garde au poste indiqué par son Inspecteur.
- Ajoutez le champ
public Transform post;. Le champ de Guard1 contient Post1 ; celui de Guard2 est vide. - Dans
Update(), lorsquepost == null, faitesreturn;afin qu’un garde sans poste reste sur place. - Ensuite, déplacez-le avec
Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).
Appuyez sur « Jouer » : Guard1 marche jusqu’à son poste et Guard2 attend. Puis appuyez sur « Vérifier ».
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.
}
}
Toutes les leçons de Les bases du scripting dans Unity
1Les bases de C# dans Unity
Bonjour, UnityVariablesLes nombres décimaux ont besoin d’un fDu texte dans la consoleDes variables qui mémorisentSi et sinonComparer des nombresRécapitulatif : le collecteur de pièces7Boucles et méthodes
Répéter avec forBoucles imbriquéesÉcrire une méthodeMéthodes qui renvoient une réponseTableauxRécapitulatif : escalier10Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que la rechercheLe null de UnityRécapitulatif : la pièce la plus proche13Projet : Éviter les blocs
Le coureurDes blocs tombent du ciel2Mettez-le en mouvement
Placez le cubeDéplacez-le à chaque frameTournez chaque secondeDirigez avec les touchesRécapitulatif : pilotez le cube5Vecteurs
Additionner des vecteursDirectionsEspace local et espace globalVitesse diagonaleDistance entre des objetsVector3 est une structureRécapitulatif : pilote de drone8GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur3L’inspecteur
Champs de l’inspecteurSerializeFieldFlottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur6Transformations et hiérarchie
Parents et enfantsHissez le drapeauÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : la lune en orbite9Projet : Attrape l’étoile
Le receveurUne étoile filanteEntraînez-vous par vous-même : Playground Unity