Patchs
Les patchs vous permettent de créer de la logique avec des nœuds et des fils, sans écrire de code. Utilisez-en un quand un événement ne suffit plus.
Un patch se situe entre les événements et les scripts :
- Les événements sont simples, mais ils ne peuvent ni garder une valeur ni faire de calculs.
- Les scripts peuvent tout faire, mais il faut écrire du code.
Essayez un patch la première fois que vous voulez « …mais seulement si le score dépasse dix » ou « …le déplacer un peu plus loin à chaque fois ».
Un patch s'exécute aussi vite que du code écrit à la main. Vous pouvez le voir sous forme de code à tout moment dans le panneau Code. C'est aussi le moyen le plus rapide de vérifier qu'un graphe fait bien ce que vous vouliez.
Tous les nœuds et leurs ports sont décrits dans la référence des nœuds de patch : 203 nœuds répartis en 24 catégories.
Créer un patch
- Ouvrez le Patch editor depuis la barre de gauche. Il affiche le graphe de la scène.
- Cliquez sur + Add node et choisissez un nœud du groupe Events. C'est là que le graphe commence.
- Ajoutez un nœud qui fait quelque chose, par exemple un nœud qui modifie un composant.
- Tirez un fil depuis la sortie pulse du nœud d'événement jusqu'à l'entrée pulse de l'autre nœud.
- Ouvrez le panneau Code pour vérifier votre graphe sous forme de code.
Types de nœuds
| Type | Comment le reconnaître | Ce qu'il fait |
|---|---|---|
| Événement | uniquement des sorties, dont un pulse | lance le graphe : au démarrage, à l'appui, à chaque image |
| Effet | un pulse en entrée et un pulse en sortie | fait quelque chose, dans l'ordre |
| Contrôle | divise ou répète le pulse | branch, gate, repeat, for-each, once, delay |
| Donnée | aucun pulse | fournit une valeur : un nombre, une somme, le champ d'un composant |
Le fil pulse fixe l'ordre dans lequel les choses se passent. Suivez-le depuis un nœud d'événement pour lire la séquence. Les fils de données ne font que transporter des valeurs. Ils n'ont pas d'ordre.
Ports et fils
Chaque port a un type : nombre, booléen, chaîne, vecteur, couleur ou objet. Deux ports de types différents ne se connectent pas. Cela évite beaucoup d'erreurs avant même de lancer quoi que ce soit.
Un port vecteur se déplie en x, y et z. Vous pouvez relier l'un d'eux par un fil et saisir
les deux autres.
Une entrée sans fil utilise la valeur saisie dans le nœud. Ne reliez donc que ce qui change.
Choisir l'objet utilisé par un nœud
Les nœuds de composant, comme « get transform » ou « set material », doivent savoir quel objet utiliser.
- Laissez l'objet vide : le nœud utilise cet objet, celui auquel le patch est attaché.
- Indiquez un objet : le nœud agit sur cet objet à la place.
Deux choses vous simplifient la vie :
- Les nœuds Get ne provoquent pas d'erreur. Lire un composant que l'objet n'a pas ne renvoie rien, et le graphe continue de fonctionner.
- Les nœuds Set ne modifient que ce que vous avez rempli. Tout le reste reste tel quel.
C'est la même unité que partout ailleurs dans l'éditeur. Les scripts utilisent des radians : pensez à convertir quand vous passez une rotation entre un patch et un script.
Le contenu du menu des nœuds
| Groupe | Ce que vous y trouvez |
|---|---|
| Events | 30 points de départ : démarrage, image, appui, touches, collisions, suivi |
| Components | lire et modifier n'importe quel composant |
| Math, Vectors, Logic, Strings | calculs, comparaisons, vecteurs et texte |
| Flow | branch, gate, repeat, for-each, once, delay, sequence |
| State | counter, toggle, timer, smooth |
| Entities, Lifecycle | trouver, créer, faire apparaître et détruire des objets |
| Physics | impulsions, forces, vitesse, raycast |
| Multiplayer | envoi, réception, état partagé, apparition d'objets |
| Globals, Variables, Messaging | des valeurs partagées avec d'autres patchs et scripts |
| UI | lire et modifier les variables d'une carte d'interface |
| Functions | appeler un autre patch ou un script |
Réutiliser un patch
Enregistrez un graphe comme patch dans les ressources de votre projet : vous pourrez ensuite le déposer sur d'autres canevas. Ce que vous obtenez dépend de la façon dont vous l'avez construit :
| Vous avez construit | Vous obtenez |
|---|---|
| aucun nœud d'entrée ni de sortie | un comportement : déposez-le et il s'exécute, sans aucun fil |
| des entrées, des sorties et une entrée pulse | une étape : elle s'exécute à l'arrivée du pulse, puis ses sorties sont prêtes |
| des entrées et des sorties, mais pas de pulse | une fonction : ses sorties sont calculées à chaque endroit où on les lit |
Les connecteurs du patch viennent des nœuds d'entrée et de sortie qu'il contient. Ajoutez-en un : il apparaît partout où le patch est utilisé. Quand vous modifiez le patch, tout ce qui l'utilise se met à jour immédiatement.
Dans une fonction, il n'y a pas de « cet objet » : les nœuds d'objet et de composant n'y fonctionnent donc pas. Utilisez les fonctions pour les données, les calculs et la logique. Faites le travail sur la scène dans le patch qui appelle la fonction.
Les patchs peuvent aussi appeler des scripts. C'est la façon habituelle de faire ce qu'aucun nœud ne couvre.
Garder des valeurs d'une exécution à l'autre
Il existe trois façons de garder une valeur. Elles diffèrent par qui peut la voir :
| Groupe de nœuds | Partagé avec |
|---|---|
| Variables | les nœuds de ce seul patch |
| Globals | tous les patchs, scripts et événements du projet |
| Messaging | tous ceux qui écoutent, sous forme d'avis ponctuel envoyé par nom |
Il existe deux sortes de globales :
- les globales de type project gardent leur valeur quand le visiteur passe d'un espace à l'autre ;
- les globales de type space repartent de zéro dans chaque espace.
Les noms des variables, des globales et des messages se saisissent au clavier, sans fil.
Écrire une ligne de JavaScript
Deux nœuds acceptent directement du JavaScript :
- Expression (
expression) renvoie une valeur. - Action (
action) exécute des instructions.
À l'intérieur, vous pouvez utiliser tout ce qu'un script peut utiliser.
Servez-vous-en pour une petite chose qu'aucun nœud ne couvre. Si vous vous retrouvez à y écrire beaucoup de code, écrivez plutôt un script et appelez-le depuis le graphe.
En cas de problème
Ouvrez le panneau Code. Si quelque chose ne va pas dans le graphe, le problème s'y affiche. Deux causes fréquentes : une boucle dans les fils de données, et du JavaScript erroné dans un nœud Action.
Un patch cassé n'arrête pas la scène. Vos autres patchs continuent de fonctionner.
Suivant : Contrôles de jeu — laisser les visiteurs se déplacer.