Où placer un script
Vous pouvez attacher un script à un objet, à une scène, à un espace ou à tout le projet. Le niveau choisi décide combien de temps le script tourne, et cela compte souvent plus que le code.
| Attaché à | Tourne tant que | S'arrête quand |
|---|---|---|
| Un objet | l'objet est à l'écran | il est masqué, désactivé ou supprimé |
| Une scène | la scène est active | le visiteur quitte la scène |
| Un espace | le visiteur est dans l'espace | il passe dans un autre espace |
| Le projet | toujours, dans tous les espaces | le visiteur s'en va |
Sur un objet
C'est le cas par défaut. Utilisez-le pour un comportement propre à une seule chose : une porte qui s'ouvre, un ennemi qui poursuit, un bouton qui réagit.
ctx.entity est cet objet. Le script s'arrête en même temps que l'objet : vous n'avez donc jamais
à faire le ménage derrière un objet qui n'existe plus.
Sur une scène
Ajoutez-le dans la section Scripts de la scène. Utilisez-le pour la logique qui concerne toute la scène : jouer une introduction dans l'ordre, compter les objets à ramasser qui restent, décider quand le visiteur peut passer à la suite.
Il démarre quand la scène devient active et s'arrête quand elle ne l'est plus. Dans un projet AR, cela signifie qu'il démarre quand la scène est détectée.
Sur un espace
Ajoutez-le dans la section Scripts de l'espace. Un script d'espace continue de tourner quand la scène change. Utilisez-le pour un score sur trois scènes, un minuteur pour toute la visite, ou une logique qui choisit la scène suivante.
Un toucher ou un autre événement sur un objet atteint aussi le script d'espace : il remonte de l'objet à la scène, puis à l'espace.
Sur le projet
Ajoutez-le dans les réglages du projet. Le script est ajouté à chaque espace : il est donc présent partout où va le visiteur.
Utilisez-le pour ce qui doit durer d'un espace à l'autre : les choix du visiteur, sa progression globale, les statistiques.
Ce qui garde sa valeur
| Stocké dans | Après un changement de scène | Après un changement d'espace | Après un rechargement |
|---|---|---|---|
une variable dans init | seulement si le script tourne encore | seulement si le script tourne encore | non |
ctx.store | oui | non | non |
| une variable globale | oui | oui | non |
une variable globale @space: | oui | non — chaque espace garde la sienne, c'est voulu | non |
Rien n'est conservé : ni store, ni les variables globales. Si vous avez besoin d'une valeur la
prochaine fois, envoyez-la vers un endroit à vous pendant que le visiteur est encore sur la page.
Choisir un niveau
Posez-vous la question : quelle est la plus petite chose que concerne cette logique ?
- Un seul objet — mettez le script sur l'objet.
- Cette scène — mettez-le sur la scène.
- Toute la visite — mettez-le sur l'espace. S'il y a plusieurs espaces, mettez-le sur le projet.
Ne mettez pas tout sur le projet « au cas où ». Un script de projet ne peut compter sur le chargement d'aucune scène en particulier. Il se remplit de vérifications dont un script d'objet n'a jamais besoin.
Les patches fonctionnent de la même façon
Vous pouvez aussi attacher un patch à chacun de ces niveaux, et il tourne pendant la même durée. Un patch sur le projet est la façon habituelle de construire une logique pour tout le projet sans écrire de code.
Suivant : L'API ctx — tout ce qu'un script peut
faire avec ctx.