logo

Comprendre les préfabriqués et l'instanciation

L'instanciation et la destruction de personnages ou d'objets sont très courantes dans n'importe quel jeu. Instancier signifie faire exister l’objet. Des objets apparaissent, apparaissent ou se génèrent dans un jeu, les ennemis meurent, les éléments de l'interface graphique disparaissent et les scènes sont chargées tout le temps dans le jeu.

Les préfabriqués sont très utiles lorsque vous souhaitez instancier des GameObjects compliqués ou une collection de GameObjects au moment de l'exécution. Par rapport à la création de GameObjects à partir de zéro à l’aide de code, l’instanciation de préfabriqués à l’aide de code est meilleure et présente de nombreux avantages.

Comprenons ce que sont les préfabriqués ; puisque les préfabriqués sont considérés comme importants pour comprendre comment fonctionne l'instanciation dans Unity.

Préfabriqués sont comme les plans d’un GameObject. Nous pouvons donc dire que les préfabriqués sont une copie d'un GameObject qui peut être dupliqué et inséré dans une scène, même s'il n'existait pas au moment de la création de la scène ; en d’autres termes, les préfabriqués peuvent être utilisés pour générer dynamiquement des GameObjects.

Créons un préfabriqué ; pour cela, vous devez faire glisser le GameObject souhaité de votre hiérarchie de scènes vers les actifs du projet.

Comprendre les préfabriqués et l'instanciation

Maintenant, pour instancier un GameObject, nous appelons la méthode Instantiate() dans notre script. Cette méthode est disponible dans MonoBehaviour, prend un GameObject comme paramètre, elle sait donc quel GameObject créer ou dupliquer. Il propose également différentes substitutions pour modifier la transformation de l'objet nouvellement instancié, ainsi que la parentalité.

Créez maintenant un nouveau script appelé Instantiator.cs et copiez-y le code suivant.

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Instantiator : MonoBehaviour { public GameObject Diamond; // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Instantiate(Diamond); } } } 

Dans le programme ci-dessus, nous avons utilisé la méthode GetKeyDown de la classe Input pour vérifier si le joueur a appuyé sur un bouton spécifique lors de la dernière image. La méthode GetKeyDown() renvoie true si la touche spécifiée par l'énumération KeyCode (qui est utilisée pour répertorier toutes les touches possibles sur un clavier standard) est enfoncée dans ce cadre.

Enregistrez le script. Et maintenant, créez un GameObject vide en cliquant avec le bouton droit sur la scène depuis l'onglet Hiérarchie.

Comprendre les préfabriqués et l'instanciation

Attachez ce fichier de script (Instantiator.cs) au composant GameObject nouvellement créé à partir de l'onglet Inspecteur.

Maintenant, dans la variable Diamond, faites glisser le préfabriqué que nous avons créé.

Comprendre les préfabriqués et l'instanciation

Lorsque vous lancez le jeu maintenant, appuyer sur la barre d'espace créera un nouvel objet Diamant identique à celui que nous avons utilisé pour créer le préfabriqué. Vous pouvez voir que chaque diamant est créé dans la hiérarchie des objets. La raison pour laquelle vous ne pouvez pas les voir apparaître dans le jeu est que pour le moment, ils sont tous créés exactement les uns sur les autres. Mais vous pouvez le vérifier depuis l'onglet Hiérarchie. Chaque fois que vous appuyez sur la barre d'espace, elle apparaîtra dans l'onglet sous la forme d'un diamant (clone).

Comprendre les préfabriqués et l'instanciation