Manipuler efficacement les composants dans Unity peut être complexe.
Sans une bonne compréhension, cela peut entraîner des bugs et des performances sous-optimales.
Cet article vous guide à travers des méthodes clés pour gérer les composants Unity, améliorant ainsi votre contrôle sur le comportement des objets.
Créez votre premier jeu 3D en C# avec Unity, étape par étape.
Dans Unity , les composants sont des éléments qui définissent le comportement et les propriétés des objets de jeu (GameObjects). La capacité d’accéder et de manipuler ces composants via des scripts est essentielle pour contrôler les objets dans une scène. Pour interagir avec ces composants, Unity fournit plusieurs méthodes, dont GetComponent , GetComponentInChildren et GameObject.Find .
Ces méthodes vous permettent de rechercher, d’accéder et de modifier les propriétés de composants spécifiques, comme le Rigidbody, le BoxCollider ou les composants personnalisés.
Commençons par faire un tour d’horizon de quelques méthodes liées Manipulation des Composants :
Méthode | Description |
---|---|
GetComponent | Récupère le composant du type spécifié attaché au même GameObject. |
GetComponentInChildren | Récupère le composant du type spécifié dans l’un des enfants du GameObject. |
GameObject.Find() | Trouve un GameObject dans la scène par son nom, puis permet d’accéder à ses composants. |
GetComponentInParent | Récupère le composant dans le GameObject parent, s’il existe. |
gameObject.AddComponent | Ajoute un composant du type spécifié au GameObject auquel le script est attaché. |
- GetComponent
Dans cet exemple, on utilise GetComponent<Rigidbody>() pour accéder au composant Rigidbody d’un cube. Lorsqu’on appuie sur la touche Espace, on désactive la propriété isKinematic pour que le cube tombe.
usingUnityEngine;
publicclassComponentsDemo : MonoBehaviour {
[SerializeField] privateRigidbody rb;
voidStart() {
// Récupère le composant Rigidbody attaché à ce GameObject
rb = GetComponent();
}
voidUpdate() {
// Si la touche Espace est appuyée, on désactive isKinematic
if (Input.GetKeyDown(KeyCode.Space)) {
rb.isKinematic = false;
Debug.Log("Le cube commence à tomber !");
}
}
}
Grâce à l’attribut SerializeField , nous avons la possibilité de renseigner manuellement la variable « rb » via l’inspector. Mais nous allons dans ce cas le faire dynamiquement en utilisant GetComponent<Rigidbody>() pour accéder au composant Rigidbody .
Input.GetKeyDown(KeyCode.Space) détecte l’appui de la touche Espace pour désactiver isKinematic , ce qui permet au cube de tomber sous l’effet de la gravité. Bien entendu, nous avons initialisé isKinematic à true via l’inspecteur.
Voici un aperçu du résultat :
- GameObject.Find
Utilisons à présent GameObject.Find pour trouver un GameObject par son nom, puis accéder à son composant BoxCollider afin de modifier certaines de ses propriétés dans la méthode Update.
usingUnityEngine;
publicclassComponentsDemo : MonoBehaviour {
privateBoxCollider boxCollider;
voidStart() {
// Recherche d'un GameObject nommé "Cube" et récupération de son BoxCollider
GameObject cube = GameObject.Find("Cube");
if (cube != null) {
boxCollider = cube.GetComponent();
} else {
Debug.Log("Le GameObject 'Cube' n'a pas été trouvé !");
}
}
voidUpdate() {
// Si le BoxCollider a été trouvé, et la touche "espace" appuyée
// on modifie sa taille
if (boxCollider != null && Input.GetKeyDown(KeyCode.Space)) {
boxCollider.size = newVector3(2, 2, 2);
Debug.Log("La taille du BoxCollider a été modifiée.");
}
}
}
Dans le script ci-dessus, GameObject.Find(« Cube ») cherche un GameObject nommé « Cube » dans la scène . GetComponent<BoxCollider>() récupère le composant BoxCollider pour pouvoir modifier sa propriété size .
Voici le résultat :
De façon analogue, si notre script était attaché à un objet parent dont l’objet cube est enfant, nous aurions plutôt utilisé GetComponentInChildren .
Après avoir appris à manipuler les composants d’objets, il est souvent nécessaire de mesurer la distance entre deux objets pour déterminer leur interaction. Cela peut être utile pour les déplacements ou pour les déclencheurs d’événements basés sur la proximité entre les objets dans la scène.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment fonctionne GetComponent dans Unity?
Comment utiliser GameObject.Find pour accéder aux composants?
Quelles erreurs éviter lors de la manipulation des composants Unity?
Quels sont les avantages de stocker les composants dans des variables?
Comment mesurer la distance entre deux objets dans Unity?
Conclusion
En maîtrisant la manipulation des composants Unity, vous pouvez enrichir vos scènes de jeu de manière significative. Quelle nouvelle technique allez-vous explorer ensuite pour améliorer vos projets Unity?