Concepts de base de l’écriture de scripts cloud
Lire une vue d’ensemble de Mesh Cloud Scripting et mesh Visual Scripting
Différences entre les scripts cloud mesh et monoBehaviours
Il existe plusieurs différences majeures entre Mesh Cloud Scripting et MonoBehaviours :
- Les services de script cloud sont écrits sur l’API Mesh Cloud Scripting (par opposition à l’API Unity).
- Les services de script cloud s’exécutent dans le cloud dans un processus distinct (par opposition au client) et leurs effets sont automatiquement synchronisés avec tous les clients connectés.
Présentation de l'architecture
Pour activer mesh Cloud Scripting, un service d’application appelé Mesh Cloud Scripting Service est déployé sur un groupe de ressources Azure particulier que vous fournissez. Cloud Scripting s’exécute sur le serveur principal Azure et se compose d’un ensemble de scripts C# de serveur s’exécutant dans un conteneur avec un point de terminaison auquel les clients se connectent. Dans le diagramme ci-dessous, vous pouvez voir qu’il existe deux clients qui se connectent au service Cloud Scripting. Cloud Scripting Service possède son propre graphique de scène faisant autorité (marqué « A » dans le diagramme). Cloud Scripting Service interagit avec ce graphe de scène via l’API de graphe de scène Mesh Cloud Scripting.
Le graphe de scène Mesh Cloud Scripting est automatiquement synchronisé à partir du cloud pour tous les clients connectés. Chaque client a une copie identique du graphe de scène Mesh Cloud Scripting (marqué « B » sur le diagramme), qui est synchronisé avec la version cloud faisant autorité. Lorsque mesh Cloud Scripting Service apporte des modifications au graphe de scène dans le cloud, ces modifications sont propagées aux copies sur tous les clients.
Sur chaque client, le runtime Unity Mesh réagit aux modifications apportées à l’instance du client du graphique de scène Mesh Cloud Scripting et met à jour la scène Unity pour refléter son état. Bien que l’API de graphe de scène mesh Cloud Scripting et l’API de graphe de scène Unity soient différentes, elles sont mappées de près les unes aux autres et ont la même structure ou similaire.
Mesh Cloud Scripting, Game Objects et Mesh Cloud Scripting Scene Graph
Les objets qui apparaissent finalement dans un événement dans l’application Mesh peuvent être divisés en deux catégories :
Objets que vous ajoutez à votre environnement dans Unity.
Objets avec personnalisation de votre événement. Étant donné qu’ils ne faisaient pas partie de l’environnement, mesh Cloud Scripting ne les connaît pas.
Création d’une scène
Pour activer mesh Cloud Scripting, votre scène doit avoir un composant Mesh Cloud Scripting .
Le composant est chargé de gérer les scripts que vous créez et de les lier à la scène Unity à la fois au moment de la modification et à l’exécution dans l’application Mesh. Mesh Cloud Scripting est une technologie autonome, mais elle a une intégration étroite avec Unity. Vous trouverez des instructions pour ajouter Mesh Cloud Scripting GameObject dans l’article intitulé Créer un projet de script cloud simple et obtenir des informations plus détaillées sur les scripts dans la section Guide du programmeur.
Le graphique de scène Mesh Cloud Scripting est limité aux GameObjects que vous ajoutez à la scène sous le GameObject qui contient le composant Mesh Cloud Scripting. Bien que Mesh Cloud Scripting ne puisse pas voir directement la hiérarchie de scènes du reste de la scène, il peut accéder aux API que l’application Mesh fournit, par exemple, elle peut obtenir une liste d’utilisateurs dans la scène ou réagir à un objet sélectionné.
Composants et graphe de scène de script cloud Mesh
Dans le diagramme ci-dessous, notez que les hiérarchies pour la scène Unity et la scène de script cloud Mesh sont identiques. Les nœuds bleus de la section Scène Unity représentent GameObjects ; chaque GameObject a un TransformNode correspondant dans mesh Cloud Scripting Scene Graph. Lorsqu’un TransformNode est mis à jour, il provoque la transformation de l’objet de jeu auquel il correspond dans la scène Unity pour qu’elle soit mise à jour vers la même valeur.
L’API Mesh Cloud Scripting a des types qui correspondent uniquement à un sous-ensemble de composants Unity complets. Il est toujours valide pour créer une scène Unity avec les composants de l’API Mesh Cloud Scripting ne peut pas être mappée ; Ils seront simplement invisibles pour mesh Cloud Scripting. Dans le diagramme, un composant de couleur blanche a un nœud correspondant dans le graphe de scène Mesh Cloud Scripting ; Un composant de couleur verte ne le fait pas. Le graphe de scène Mesh Cloud Scripting n’a pas de nœud système de particules. Dans notre exemple, le composant système de particules de la scène Unity ne s’affiche pas dans la scène Mesh Cloud Scripting correspondante. Toutefois, ses composants environnants et l’objet de jeu propriétaire se trouvent dans le graphe de scène Mesh Cloud Scripting. Cela signifie que Mesh Cloud Scripting sera en mesure de déplacer le système de particules autour de la scène en déplaçant ses propres objets de jeu même si le système de particules lui-même est invisible dans le script cloud.
L’API Mesh Cloud Scripting autorise le clonage de nœuds. Si l’application fait un clone de « A » (qui correspond au nœud « A », GameObjectParent, dans la scène Unity), cela clone l’intégralité de l’arborescence de GameParentObject, y compris le script cloud mesh system mesh ne peut pas voir.
Création de scripts cloud Mesh
Vous trouverez des instructions détaillées sur Mesh Cloud Scripting dans les articles Créer un projet de script cloud simple et les articles du Guide du programmeur. Ici, nous proposons une brève vue d’ensemble.
Un projet Unity classique contenant une scène avec mesh Cloud Scripting se présente comme suit sur le disque (les dossiers sont affichés en gras) :
- Projet Unity
- Actifs
- Scènes
- MyScene.unity
- . MeshCloudScripting
- MyScene
- MyScene.csproj
- Program.cs
- scene.map
- App.cs
- MyScene
- Scènes
- Actifs
Chaque scène de votre projet Unity qui contient le composant MeshCloudScripting a un dossier correspondant du même nom contenu dans un « ». Dossier MeshCloudScripting » dans votre répertoire Assets. Le composant Mesh Cloud Scripting crée ce dossier et son ensemble initial de fichiers qui seront compilés en un service de script cloud entièrement opérationnel. Certains des fichiers initiaux sont indiqués ci-dessus. Program.cs
contient du code réutilisable qui prend en charge les éléments suivants :
configuration d’un IHostBuilder pour lancer le
App
service.création d’une instance IHost .
exécution de l’instance
IHost
à la fin.
App.cs
est la classe qui héberge votre logique d’application. Il implémente l’interface IHostedService , de sorte qu’il a deux points d’entrée : StartAsync
et StopAsync
. StartAsync
est déclenché une fois, lorsque le IHost
service est prêt à démarrer App
. En outre, StopAsync
est déclenché lorsque l’exécution IHost
d’un arrêt approprié.
Représentation de scène
Notez le fichier scene.map dans la liste ci-dessus. Il s’agit d’un détail interne, mais il est utile de comprendre. Lorsqu’elle est déclenchée manuellement dans l’interface utilisateur ou lorsque la scène Unity est lue dans l’éditeur, le composant Mesh Cloud Scripting écrit un fichier scene.map dans le dossier Mesh Cloud Scripting correspondant. Il s’agit d’une représentation de la scène sous la forme d’une hiérarchie de scènes de script cloud Mesh ; les types Unity sont convertis en types mesh Cloud Scripting. Lorsque le service Mesh Cloud Scripting est déployé sur le cloud, il n’a pas besoin de la scène Unity d’origine à exécuter. Au lieu de cela, il charge le fichier scene.map qui définit la hiérarchie de scène initiale. Lorsqu’un client Mesh se connecte au service Mesh Cloud Scripting, il reçoit la hiérarchie Mesh Cloud Scripting et met à jour sa scène Unity pour qu’elle corresponde. Pour ce faire, nous stockons également les ID dans les liaisons mesh Cloud Scripting utilisées pour mapper les objets Unity correspondants dans la scène.
Remarque : Pour que les éléments ci-dessus fonctionnent, le fichier scene.map et la scène Unity doivent correspondre. Si, pour une raison quelconque, ils ne se connectent pas, par exemple, en raison d’une erreur d’exportation. Cela est détecté et le client Mesh Cloud Scripting Service et Mesh ne se connectent pas.
Environnements de publication avec script cloud Mesh
Lorsque vous publiez un environnement avec mesh Cloud Scripting, il publie le service Environnement et Mesh Cloud Scripting sur Azure. Ceci est illustré dans le diagramme ci-dessous :
Lorsque vous apportez une modification à votre scène, vous devez appuyer sur Play dans Unity pour afficher un aperçu de la scène avec le service mesh Cloud Scripting nouvellement créé et exécuté localement. Publiez ensuite l’environnement modifié à l’aide du chargeur mesh. La publication est décrite plus en détail dans la build et la publication de votre environnement et fournit des détails sur les scripts cloud pour les articles de génération et de publication .
Authentification dans le service mesh Cloud Scripting
Un service de script cloud peut conserver la liste de ses utilisateurs. Une fois qu’un utilisateur est authentifié, le service Cloud Scripting a un identificateur persistant pour l’utilisateur sur plusieurs sessions.
Cela dit, le flux d’authentification dans mesh Cloud Scripting Service ne nécessite aucun effort supplémentaire de votre part. Il est entièrement implicite et les parties impliquées travaillent pour obtenir le jeton et le valider automatiquement.
Voici les parties impliquées dans le flux d’authentification :
Kit de ressources Mesh : en tant qu’outil par lequel les services de script cloud sont déployés sur le cloud, vous pouvez choisir votre Service Mode
service Cloud Scripting pour valider le jeton d’authentification. Cette opération peut être effectuée dans le paramètre Configuration de l’environnement dans l’interface utilisateur du chargeur mesh.
Service Microsoft Mesh : responsable de l’émission d’un jeton. Sans jeton, les utilisateurs ne peuvent pas interagir avec un script cloud.
Microsoft Mesh : point d’entrée pour la façon dont les utilisateurs interagissent avec Mesh Cloud Scripting. Le client Microsoft Mesh est chargé de demander un jeton d’accès auprès du service Microsoft Mesh pour le compte de l’utilisateur.
Mesh Cloud Scripting Service : valide le jeton qu’il reçoit à partir des demandes de connexion auprès du service Microsoft Mesh, puis sélectionne un identificateur d’utilisateur persistant à partir du jeton.
Les parties travaillent ensemble comme illustré ci-dessous :