Blueprint Interface et Event Dispatcher : faire communiquer tes Blueprints
Un joueur appuie sur une touche pour agir sur une porte, une lampe ou un coffre. Comment dire « fais ton action » à n’importe lequel, sans écrire un Cast par objet ? Ce guide présente le Custom Event, le Blueprint Interface et l’Event Dispatcher, et t’aide à choisir le bon. Tout est vérifié sur la documentation officielle d’Epic Games.
Le Custom Event : ton propre événement
Imagine un événement OpenDoor. Une touche, un objet ramassé ou une dalle au sol pourraient tous ouvrir la même porte. Plutôt que de recopier les mêmes nœuds partout, tu crées un événement avec ce nom et tu le lances d’où tu veux.
- Dans l’Event Graph, fais un clic droit › Add Custom Event… et donne-lui un nom.
- Relie-lui les nœuds à exécuter.
- Pour le lancer, fais un clic droit, tape son nom et choisis l’appel, rangé sous Call Function.
Comme une fonction, un Custom Event peut recevoir des valeurs : sélectionne-le, puis Details › Inputs › +. Si un appel garde l’ancienne forme, fais un clic droit dessus › Refresh Nodes.
Différence avec une fonction : une fonction peut répondre, avec une sortie, mais elle ne peut pas attendre. Un Custom Event ne répond rien, mais il accepte les nœuds qui attendent, comme Delay.
Une touche du clavier est aussi un événement. Le nœud de la touche a une sortie Pressed, quand le joueur appuie, et une sortie Released, quand il la lâche. Un acteur posé dans le niveau n’écoute pas le clavier tout seul : dans Class Defaults, Details › Input, mets Auto Receive Input sur Player 0, le premier joueur.
Le problème du Cast
Avec Cast To suivi du nom d’un Blueprint de porte, seules les portes répondent. Faire un Cast par type d’objet serait bien trop long. Il faut un moyen de dire « fais ton action » à n’importe quel objet.
Le Blueprint Interface : une liste de fonctions
Un Blueprint Interface liste des fonctions sans code : juste leur nom, leurs entrées et leurs sorties. Le code est écrit dans chaque Blueprint qui ajoute l’interface.
- Dans le Content Browser, fais un clic droit › Blueprint › Blueprint Interface, puis nomme-le.
- Ajoute-lui une fonction, par exemple Interact.
- Dans chaque Blueprint concerné (porte, lampe, coffre), clique sur Class Settings, puis Implemented Interfaces › Add, et choisis l’interface.
- La fonction apparaît dans My Blueprint. Double-clique dessus : un nœud d’événement se pose dans l’Event Graph. Relie-lui ce que fait cet objet.
Pour lancer la fonction, utilise sa version Interact (Message). Elle marche sur n’importe quel acteur branché dans Target, sans Cast. Si l’acteur n’a pas l’interface, rien ne se passe, et il n’y a pas d’erreur.
L’Event Dispatcher : une annonce
Quand un boss meurt, une porte s’ouvre, l’écran affiche « Victoire » et un coffre apparaît. Le boss ne doit pas connaître tout ce monde. Avec un Event Dispatcher, il fait une annonce, et ceux qui écoutent réagissent chacun à leur façon.
- Dans le Blueprint qui annonce : My Blueprint › Event Dispatchers › +, puis nomme-le.
- Dans chaque Blueprint qui écoute : Bind Event to suivi du nom du dispatcher relie un de ses événements.
- Quand l’événement arrive, le Blueprint qui annonce fait Call suivi du nom du dispatcher : tous les événements reliés partent.
Bind ajoute un événement à la liste du dispatcher, et Call lance tous les événements de la liste. Si personne n’a fait Bind, la liste est vide et il ne se passe rien.
Quelle façon de communiquer choisir ?
- Un acteur précis : une référence.
- Le même ordre pour des acteurs qui répondent différemment : un Blueprint Interface.
- Une annonce avec plusieurs auditeurs : un Event Dispatcher.
- Un accès aux variables du type exact : un Cast.
Questions fréquentes
Quelle est la différence entre un Blueprint Interface et un Cast ?
Un Cast n’accepte qu’un seul type de Blueprint. Avec une interface, tu ajoutes la même fonction à plusieurs Blueprints, puis tu envoies Interact (Message) à l’acteur visé.
Que se passe-t-il si j’envoie un message d’interface à un acteur qui n’a pas l’interface ?
Rien, et sans erreur. Un appel en Message marche sur n’importe quel acteur.
Pourquoi mon Event Dispatcher ne déclenche rien ?
Il manque sans doute un Bind. Call lance les événements reliés : sans Bind, la liste est vide.
Sources officielles
- Events (documentation Epic)
- Custom Events (documentation Epic)
- Blueprint Communication Usage (documentation Epic)
- Implementing Blueprint Interfaces (documentation Epic)
- Event Dispatchers (documentation Epic)
À lire aussi : Cast To et références Blueprint, les fonctions Blueprint et créer un HUD avec UMG.
Tu veux faire communiquer tes propres Blueprints avec des interfaces et des dispatchers ? Pratique-le dans un cours en leçons courtes, avec quiz et mini-projets.
Apprendre Unreal Engine 5 gratuitement