Share via


Concepts de base du script cloud

Lire une vue d’ensemble de Mesh Cloud Scripting et Mesh Visual Scripting

Différences entre les scripts cloud de maillage et les 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 à sur le 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# 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 de script cloud. Cloud Scripting Service a son propre graphique de scène faisant autorité (marqué « A » dans le diagramme). Cloud Scripting Service interagit avec ce graphique de scène via l’API de graphe de scène Mesh Cloud Scripting.

Diagramme de l’architecture de script cloud.

Le graphique de scène Mesh Cloud Scripting est automatiquement synchronisé à partir du cloud avec tous les clients connectés. Chaque client dispose d’une copie identique du graphique 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 graphique 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 au 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 graphique de scène Unity soient différentes, elles sont étroitement mappées les unes aux autres et ont la même structure ou une structure 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 :

  1. Objets que vous ajoutez à votre environnement dans Unity.

  2. Objets avec lesquels vous personnalisez 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 .

Capture d’écran du composant Mesh Cloud Scripting attaché au GameObject.

Le composant est chargé de gérer les scripts que vous créez et de les lier à la scène Unity au moment de la modification et de l’exécution dans l’application Mesh. Mesh Cloud Scripting est une technologie autonome, mais elle a une intégration étroite à Unity. Vous trouverez des instructions pour l’ajout du GameObject de script cloud mesh dans l’article intitulé Créer un projet de script cloud simple et 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ène 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 de maillage

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 dans la section Scène Unity représentent GameObjects ; chaque GameObject a un TransformNode correspondant dans le graphe de scène de script cloud mesh. Lorsqu’un TransformNode est mis à jour, la transformation de l’objet de jeu auquel il correspond dans la scène Unity est mise à jour vers la même valeur.

Hiérarchies de scène Unity et Mesh

L’API Mesh Cloud Scripting a des types qui correspondent uniquement à un sous-ensemble de l’ensemble complet des composants Unity. Il est toujours valide de créer une scène Unity avec des composants que l’API Mesh Cloud Scripting ne peut pas mapper ; Ils seront tout simplement invisibles pour Mesh Cloud Scripting. Dans le diagramme, un composant de couleur blanche a un nœud correspondant dans le graphique de scène Mesh Cloud Scripting ; un composant de couleur verte ne l’est pas. Le graphe de scène Mesh Cloud Scripting n’a pas de nœud de système de particules. Par conséquent, dans notre exemple, le composant système de particules dans la scène Unity n’apparaît pas dans la scène de script cloud mesh correspondante. Toutefois, ses composants environnants et l’objet de jeu propriétaire se trouvent dans le graphique 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 objets de jeu propriétaires, même si le système de particules lui-même est invisible pour Cloud Scripting.

L’API Mesh Cloud Scripting permet le clonage de nœuds. Si l’application effectue un clone de « A » (qui correspond au nœud « A », GameObjectParent, dans la scène Unity), cela clone l’ensemble de la sous-arborescence de GameParentObject, y compris le système de particules Mesh Cloud Scripting ne peut pas voir.

Création de scripts cloud de maillage

Vous trouverez des instructions détaillées sur Mesh Cloud Scripting dans les articles Créer un projet de script cloud simple et le Guide du programmeur . Ici, nous donnons un bref aperçu.

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
    • Éléments multimédias
      • Scènes
        • MyScene.unity
      • . MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

Chaque scène de votre projet Unity qui contient le composant MeshCloudScripting a un dossier correspondant du même nom que celui 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 dans un service de script cloud entièrement opérationnel, bien que vide. Certains des fichiers initiaux sont présenté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 Appservice.

  • création d’un instance IHost.

  • exécution de la IHost instance jusqu’à l’achèvement.

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 seule fois, lorsque est IHost prêt à démarrer le App service. En outre, StopAsync est déclenché lorsque effectue IHost un arrêt normal.

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’il est déclenché manuellement dans l’interface utilisateur ou lorsque la scène Unity est lue dans le Rédacteur, 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ène de script cloud mesh ; Les types Unity sont convertis en types mesh Cloud Scripting. Lorsque mesh Cloud Scripting Service est déployé dans le cloud, il n’a pas besoin de la scène Unity d’origine pour s’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 qui sont utilisées pour mapper aux objets Unity correspondants dans la scène.

Remarque : Pour que le fichier ci-dessus fonctionne, le fichier scene.map et la scène Unity doivent correspondre. Si, pour une raison quelconque, ils ne le font pas (par exemple, en raison d’une erreur d’exportation), cela sera détecté et le service Mesh Cloud Scripting et le client Mesh ne se connecteront pas.

Environnements de publication avec mesh Cloud Scripting

Lorsque vous publiez un environnement avec Mesh Cloud Scripting, il publie le service de script cloud d’environnement et de maillage sur Azure. Ceci est illustré dans le diagramme ci-dessous :

Chargement du modèle d’environnement et du script cloud dans le cloud

Lorsque vous apportez une modification à votre scène, vous devez appuyer sur Lire 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 de Mesh Uploader. La publication est décrite plus en détail dans les articles Générer et publier votre environnement et Fournir des scripts cloud pour la génération et la publication .

Auth in Mesh Cloud Scripting Service

Un service de script cloud peut conserver une liste de ses utilisateurs. Une fois qu’un utilisateur est authentifié, le service de script cloud dispose d’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 le biais duquel les services de script cloud sont déployés dans le cloud, vous pouvez choisir le Service Mode service de script cloud que votre service de script cloud utilise 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 de maillage.

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 responsable de la demande d’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 des demandes de connexion à Microsoft Mesh Service, puis sélectionne un identificateur d’utilisateur persistant à partir du jeton.

Les parties travaillent ensemble comme illustré ci-dessous :

Flux d’authentification

Étapes suivantes