Dans la programmation orientée objets, il existe deux types de variables :
Primitives, comme les entiers, les caractères de texte, les floats et les booléens.
Objets, comme les acteurs et les composants d'acteur.
Chaque type a un comportement différent quand on les récupère et qu'on définit leurs valeurs.
Lorsque vous créez une variable de type primitive, une nouvelle instance de cette primitive est créée et initialise automatiquement sa valeur à 0 (ou son équivalent pour cette primitive). Par exemple, si vous créez une variable de type entier appelée MyInt, cette variable existe immédiatement avec une valeur de 0, et vous pouvez commencer à effectuer des opérations mathématiques sur celle-ci. Chaque nouvelle variable de type entier que vous créez dans le panneau des variables crée directement un nouvel entier avec sa propre valeur unique. Le paramètre de sa valeur modifie la valeur de cet entier.
Lorsque vous créez une variable de type d'objet , une nouvelle instance de cet objet n'est PAS créée. Au lieu de cela, cette variable sert de référence à un objet. Vous pouvez considérer la variable comme un espace réservé pouvant pointer vers n'importe quel objet correspondant à sa définition, ce qui vous donne un raccourci dans votre code qui vous permet d'y accéder rapidement. Lorsque vous définissez ou affectez une valeur à une variable d'objet, cela ne remplace pas l'objet précédent et ne le modifie pas non plus. À la place, cela modifie l'objet auquel la référence pointe, tandis que l'objet précédent continue d'exister jusqu'à ce qu'il soit explicitement supprimé. Pour instancier un nouvel objet, il faut en construire un et, pour y accéder, il faut l'assigner à une référence.
Ce guide propose une démonstration pas-à-pas de toutes ces façons d'interagir avec des références d'objet, en utilisant un téléporteur comme exemple. Après avoir terminé les tutoriels ci-dessous, vous serez capable :
De créer des références d'objet et leur assigner des objets.
D'utiliser des références d'objet pour accéder aux fonctions des objets et exécuter du code dessus.
D'attribuer des références d'objet dans le panneau Détails.
De réassigner des références d'objet.
Configuration requise
Ce tutoriel utilise un nouveau projet avec les paramètres suivants :
Modèle à la troisième personne.
Blueprint uniquement.
Créer un acteur qui fait référence à un autre acteur
Pour illustrer le fonctionnement des références d'objet, vous allez créer un acteur qui référence deux autres acteurs :
Un emplacement de téléportation, qui sert d'emplacement vers lequel téléporter un acteur.
Un acteur de cible qui fait office d'acteur téléporté.
Pour configurer un acteur avec ces références :
Créez une nouvelle classe de blueprint en utilisant TriggerBox comme classe parent. Nommez-la BP_TeleporterActor.
Ouvrez le blueprint de BP_TeleporterActor et cliquez sur l'onglet EventGraph.
Cliquez sur le bouton + dans le panneau Variables pour ajouter une nouvelle variable. Nommez-la TargetActor et donnez-lui le type acteur.
Créez une autre variable d'acteur appelée TeleportLocation. C'est ici que vous allez téléporter votre acteur cible.
Cliquez sur l'icône en forme d'œil de TeleportLocation pour vous assurer qu'il est visible dans le panneau Détails.
Chacune de ces variables est un espace réservé qui peut référencer un acteur dans le monde. Aucune ne pointe vers un acteur, mais vous pouvez les utiliser pour créer la logique que vous souhaitez appliquer au téléporteur.
Obtenir une référence d'acteur dans un blueprint et la téléporter vers un autre emplacement
Maintenant que vos variables d'acteur sont configurées, créez la logique de gestion de la téléportation. Pour ce faire, vous devez exécuter une opération Get pour obtenir une référence à vos acteurs.
Dans BP_TeleporterActor, cliquez sur TargetActor et faites-le glisser dans le graphique d'événements. Dans le menu déroulant qui s'affiche, cliquez sur Obtenir TargetActor. Cela crée un nœud Get.
Vous pouvez accéder aux fonctions de cet acteur en cliquant sur la broche de ce nœud, puis en la faisant glisser.
Faites un cliquer-déposer depuis le nœud Get Target Actor, puis, dans la boîte de recherche qui s'affiche, recherchez Set Actor Location et cliquez dessus pour créer un nouveau nœud Set Actor Location. Cochez la case Téléporter.
Reliez Event ActorBeginOverlap au nœud Set Actor Location.
Cliquez sur TeleportLocation et faites-le glisser dans le graphique d'événements et créez un nœud Get.
Cliquez sur Get TeleportLocation et faites-le glisser dans le graphique d'événements et créez un nœud Get Actor Location.
Reliez le nœud Get Actor Location à la broche New Location du nœud Set Actor Location.
Si vous essayez d'exécuter ce code, il échouera et générera une erreur, car les références TargetActor et TeleportLocation sont actuellement vides. En d'autres termes, elles ne pointent encore sur rien du tout, ce sont juste des espaces réservés. Les sections suivantes vont vous montrer comment définir ces valeurs.
Définir une référence d'acteur dans un blueprint
Ensuite, utilisez une opération Set pour définir l'acteur cible comme étant n'importe quel acteur qui entre dans la boîte de déclenchement.
Cliquez sur TargetActor et faites-le glisser depuis le panneau de variables dans le graphique d'événements. Cette fois, créez un nœud Set TargetActor.
Connectez le nœud Set TargetActor entre Event ActorBeginOverlap et Set Actor Location.
Cliquez sur la variable Other acteur et faites-la glisser depuis ActorBeginOverlap vers la broche d'entrée sur Set TargetActor.
Ainsi, TargetActor pointera vers n'importe quel acteur qui se déplace dans la boîte de déclenchement. Cela permet de garder une trace de la dernière chose qui est entrée dans le téléporteur. Le graphique final devrait ressembler à ceci :
Définissez une référence d'acteur dans le panneau Détails
Enfin, ensemble l'emplacement où vous voulez téléporter votre acteur.
Cliquez et faites glisser une instance de BP_TeleporterActor dans le monde. Renommez-la Teleporter1.
Cliquez et faites glisser une instance d'un acteur vide dans le monde. Renommez-la TeleportLocation1.
Cliquez sur Teleporter1. Dans le panneau Détails, cliquez sur le menu déroulant associé à l'emplacement de téléportation, puis définissez-le sur TeleportLocation1. Vous pouvez également utiliser la pipette pour le sélectionner dans le monde.
Déplacez Teleporter1 pour que la boîte de déclenchement se trouve complètement au-dessus du sol. Dans le panneau Détails, cherchez le paramètre Masquer cet acteur en jeu, puis désactivez-le. Cela vous permettra de voir le téléporteur lorsque vous lancerez votre jeu, puis de marcher directement dans la boîte de déclenchement de votre téléporteur.
Si vous créez plusieurs téléporteurs, chacun peut avoir un ensemble de téléporteurs différent, car ces références sont suivies pour chaque instance du téléporteur.
Tester votre téléporteur
Maintenant que vous avez attribué des acteurs aux références d'objet dans votre téléporteur, celui-ci est prêt à fonctionner. Cliquez sur le bouton Jouer pour lancer votre jeu dans l'éditeur, puis courrez directement dans la boîte de déclenchement de Teleporter1.
Voici ce qui se passe :
Teleporter1 va chercher votre personnage dans l' événement BeginOverlap, puis l'assigne à TargetActor.
Il obtient ensuite une référence à TargetActor et définit sa position sur l'emplacement de TeleportLocation1. La référence à TeleportLocation1 est assignée dans le panneau Détails de Teleporter1. Il n'est donc pas nécessaire de définir la référence dans le code.
Si un acteur différent entre dans la boîte de déclencheur de Teleporter1, il définit TargetActor comme cet acteur et le téléporte également vers TeleportLocation1.