Que recherchez-vous ?
Engine & platform

Comment utiliser les signaux de la ligne du temps

JULIEN BLAIS / UNITY TECHNOLOGIESContributor
May 21, 2019|6 Min
Comment utiliser les signaux de la ligne du temps
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Depuis l'introduction de Timeline en 2017, nous savons que vous attendez patiemment un moyen d'envoyer des événements. N'attendez plus ! À partir de Unity 2019.1, une nouvelle fonctionnalité appelée Signals vous aide à envoyer des événements. Voyons maintenant en quoi consiste cette nouvelle fonctionnalité.

Signaux

Voici à quoi ressemblent les signaux dans la fenêtre de la ligne de temps :

Image

Nous avons conçu les signaux pour établir un canal de communication entre Timeline et les systèmes externes. Mais qu'est-ce que cela signifie ? Pourquoi avons-nous choisi cette approche ?

Imaginons que vous utilisiez Timeline pour créer une scène. Lorsque la scène se termine, vous voulez qu'une nouvelle scène soit chargée et vous voulez activer un système physique. Il existe plusieurs façons de mettre en œuvre ce scénario :

Lorsque votre scène se termine, utilisez des scripts personnalisés pour que votre instance Timeline interagisse directement avec un gestionnaire de scène et votre système physique.

Lorsque la scène se termine, créez des marqueurs et des signaux pour envoyer un signal "scène terminée" et faites en sorte que les systèmes concernés réagissent à ce signal.

L'équipe de Timeline a opté pour la seconde approche, car elle permet à l'émetteur de rester indépendant du récepteur. Le fait de les garder indépendantes ajoute beaucoup de flexibilité, de puissance et de réutilisation. Pour mieux comprendre, voyons comment les différents éléments s'articulent entre eux.

Comment cela fonctionne-t-il ?

Pour utiliser des signaux afin de communiquer avec des systèmes extérieurs, vous avez besoin de trois éléments : un actif de signal, un émetteur de signal et un récepteur de signal.

architecture
  • Émetteur de signaux : Un émetteur de signal contient une référence à un actif de signal. Dans la ligne de temps, un émetteur de signaux est représenté visuellement par un marqueur. Vous pouvez placer un marqueur sur une piste ou dans la zone des marqueurs sous la règle de la ligne de temps.
Image
  • Récepteur de signaux : Un récepteur de signaux est un composant avec une liste de réactions. Chaque réaction est liée à un actif de signal.
  • Signal Asset : Un actif de signal est l'association entre un émetteur de signal et un récepteur de signal. Vous pouvez réutiliser le même signal dans plusieurs instances de la ligne de temps.
Exemple

Voici un jeu simple dans lequel vous devez vaincre un lapin zombie en appuyant sur les touches fléchées correspondant aux images directionnelles affichées à l'écran :

L'image directionnelle change de manière aléatoire à chaque temps musical. Si vous n'appuyez pas sur la touche fléchée droite avant que l'image ne change, vous perdez. Si vous appuyez sur un certain nombre de touches fléchées, vous gagnez.

Dans le jeu, l'instance GameTimeline comprend le déroulement du jeu. Il utilise des signaux pour afficher de nouvelles images directionnelles à chaque temps musical, comme le montre l'instance GameTimeline ci-dessous :

Image

Pour montrer comment créer et configurer des signaux, partons d'un projet dans lequel aucun signal n'a été créé. Si vous souhaitez suivre le projet, vous pouvez le télécharger ici.

Tout d'abord, pour afficher la zone des marqueurs où vous ajoutez des signaux, cliquez sur l'icône de marqueur à côté des modes d'édition de clip. La zone des marqueurs apparaît sous la règle de la ligne de temps :

image

Pour ajouter un émetteur de signal, cliquez avec le bouton droit de la souris dans la zone des marqueurs et sélectionnez Ajouter un émetteur de signal.

Image

Un émetteur de signal apparaît dans la zone des marqueurs :

Image

L'émetteur de signaux que vous venez d'ajouter est sélectionné et la fenêtre de l'inspecteur affiche ses propriétés. La fenêtre de l'inspecteur propose également des boutons pour créer les autres éléments d'un signal :

Image

Pour relier l'émetteur de signaux à un récepteur de signaux, vous devez ajouter un nouveau poste de signal. Dans la fenêtre de l'inspecteur, cliquez sur Créer un signal.... Nommez l'élément de signal "ShowKey" car il sera utilisé pour relier un émetteur à un récepteur afin de modifier l'image directionnelle. Cliquez sur Enregistrer et le poste de signalisation est ajouté au projet.

Vous souhaitez également que l'émetteur de signaux soit associé à un récepteur de signaux, cliquez donc sur Ajouter un récepteur de signaux. La fenêtre de l'inspecteur doit maintenant ressembler à ceci :

Image

Avant de poursuivre, arrêtons-nous et décrivons ce qui se passe. Lorsque vous cliquez sur le bouton Add Signal Receiver, deux choses se produisent : un nouveau composant Signal Receiver est ajouté au GameObject lié et une nouvelle réaction est ajoutée et liée au Signal Asset que vous venez de créer. Vous pouvez voir qu'ils sont liés parce que "ShowKey" apparaît comme signal d'émission et que "ShowKey" est ajouté à la liste des réactions :

Image

La fenêtre de l'inspecteur montre deux choses : les propriétés de l'émetteur de signal et les réactions définies par le composant récepteur de signal :

Image

Bien que le composant Récepteur de signaux soit lié au GameObject associé à l'instance de la ligne de temps, vous pouvez modifier le récepteur de signaux dans la fenêtre de l'inspecteur. La réaction est invoquée lorsque le récepteur de signal reçoit le signal.

La dernière étape consiste à préciser ce que fait la réaction. Dans cet exemple, il y a un composant nommé Manager avec une méthode ShowRandomKey. Cette méthode permet d'afficher une nouvelle flèche aléatoire. Pour que la réaction appelle la méthode ShowRandomKey , sélectionnez cette méthode pour l'événement Unity, comme indiqué ci-dessous :

Image

Et c'est tout ! Après avoir ajouté l'émetteur de signal et défini son récepteur de signal et la réaction, vous avez maintenant un exemple d'instance de Timeline qui communique avec la scène.

Lorsque Timeline touche l'émetteur de signal, le signal ShowKey est émis. Le récepteur de signaux, qui écoute le signal ShowKey, appelle la méthode ShowRandomKey.

Mais vous ne devez pas vous arrêter là. Plusieurs émetteurs de signaux peuvent émettre le même signal. Par exemple, dans l'instance de ligne de temps suivante, le même émetteur de signal est copié et déplacé à différents moments ; il y a un émetteur pour chaque temps musical :

Vous pouvez également faire glisser un signal directement de la fenêtre du projet vers la fenêtre de la timeline. Un émetteur de signal est automatiquement créé avec la propriété Emit Signal déjà définie.

Pour voir à quoi ressemble le projet fini, avec tous les signaux, téléchargez-le ici.

En résumé

Pour mettre en place votre premier signal, vous devez :

Cliquez avec le bouton droit de la souris sur une zone de marqueur ou une piste qui prend en charge les signaux, puis choisissez Ajouter un émetteur de signal...

Dans la fenêtre de l'inspecteur, cliquez sur Créer une ressource de signal, choisissez un nom de fichier et appuyez sur Entrée.

Toujours dans l'inspecteur, cliquez sur le bouton Créer une réaction... et définissez la réaction associée au signal que vous venez de créer.

Bonus FAQ
  • Puis-je avoir plusieurs récepteurs sur un seul objet de jeu ? Oui, tous les récepteurs de signaux d'un objet de jeu reçoivent les signaux envoyés à cet objet de jeu.
  • Un signal peut-il être réutilisé dans plusieurs instances de la ligne de temps ? Oui, un signal peut être utilisé dans plus d'une instance de la ligne du temps.
  • Un Signal Asset peut-il être étendu et personnalisé ? Oui, l'actif du signal, l'émetteur du signal et le récepteur du signal peuvent tous être étendus. Mais c'est un sujet pour un autre jour ; il y aura un autre article de blog sur la personnalisation.
  • L'émission des signaux est-elle garantie ? Oui. Les signaux ne seront pas ignorés ; ils seront émis à la prochaine image, quel que soit le taux de rafraîchissement du jeu.
  • Que se passe-t-il si un élément de la timeline contient en double des émetteurs de signaux ? Les émetteurs de signaux conservent leur référence à leurs actifs de signaux. Les actifs de signalisation ne sont pas dupliqués.

---

Découvrez les contenus d'apprentissage débutants et avancés pour l'utilisation de Timeline sur la plateforme Unity Learn Premium.