Freigeben über


Grundlegende Konzepte für Cloudskripting

Eine Übersicht über Mesh Cloud Scripting und Mesh Visual Scripting lesen

Unterschiede zwischen Mesh Cloud Scripts und MonoBehaviours

Es gibt mehrere wesentliche Unterschiede zwischen Mesh Cloud Scripting und MonoBehaviours:

  • Cloud Scripting Services werden gegen die Mesh Cloud Scripting-API (im Gegensatz zur Unity-API) geschrieben.
  • Cloud Scripting Services werden in der Cloud in einem separaten Prozess (im Gegensatz zum Client) ausgeführt, und ihre Effekte werden automatisch mit allen verbundenen Clients synchronisiert.

Übersicht über die Architektur

Um mesh Cloud Scripting zu aktivieren, wird ein Anwendungsdienst namens Mesh Cloud Scripting Service in einer bestimmten Azure-Ressourcengruppe bereitgestellt, die Sie bereitstellen. Cloud Scripting wird auf dem Azure-Back-End ausgeführt und besteht aus einer Reihe von Server-C#-Skripts, die in einem Container mit einem Endpunkt ausgeführt werden, mit dem die Clients eine Verbindung herstellen. Im folgenden Diagramm können Sie sehen, dass es zwei Clients gibt, die eine Verbindung mit Cloud Scripting Service herstellen. Der Cloud Scripting Service verfügt über ein eigenes autoritatives Szenendiagramm (mit "A" im Diagramm markiert). Der Cloud Scripting Service interagiert mit diesem Szenendiagramm über die Graph-API für Mesh Cloud Scripting-Szenen.

Ein Diagramm der Cloud Scripting-Architektur.

Das Szenendiagramm "Mesh Cloud Scripting" wird automatisch aus der Cloud mit allen verbundenen Clients synchronisiert. Jeder Client verfügt über eine identische Kopie des Szenendiagramms "Mesh Cloud Scripting" (gekennzeichnet "B" im Diagramm), das mit der autorisierenden Cloudversion synchronisiert wird. Wenn der Mesh Cloud Scripting Service Änderungen am Szenendiagramm in der Cloud vorgibt, werden diese Änderungen an die Kopien aller Clients weitergegeben.

Auf jedem Client reagiert die Unity Mesh-Laufzeit auf Änderungen in der Instanz des Szenendiagramms "Mesh Cloud Scripting" des Clients und aktualisiert die Unity-Szene so, dass sie ihren Zustand widerspiegelt. Obwohl die Graph-API für Die Mesh Cloud Scripting-Szene und die Unity-Szenendiagramm-API unterschiedlich sind, werden sie einander eng zugeordnet und weisen dieselbe oder ähnliche Struktur auf.

Mesh Cloud Scripting, Game Objects, and the Mesh Cloud Scripting Scene Graph

Objekte, die schließlich in einem Ereignis in der Mesh-App angezeigt werden, können in zwei Kategorien unterteilt werden:

  1. Objekte, die Sie ihrer Umgebung in Unity hinzufügen.

  2. Objekte, mit der Sie Ihr Ereignis anpassen. Da diese nicht Teil der Umgebung waren, ist Mesh Cloud Scripting ihnen nicht bewusst.

Erstellen einer Szene

Um Mesh Cloud Scripting zu aktivieren, muss Ihre Szene über eine Mesh Cloud Scripting-Komponente verfügen.

Screenshot der Mesh Cloud Scripting-Komponente, die an das GameObject angefügt ist.

Die Komponente ist für die Verwaltung der skripts verantwortlich, die Sie erstellen und an die Unity-Szene binden, sowohl zur Bearbeitungszeit als auch zur Laufzeit in der Mesh-App. Mesh Cloud Scripting ist eine eigenständige Technologie, verfügt aber über eine enge Integration in Unity. Anweisungen zum Hinzufügen des Mesh Cloud Scripting GameObject finden Sie im Artikel " Erstellen eines einfachen Cloud Scripting-Projekts " und ausführlichere Informationen zum Skripting im Abschnitt "Programmierhandbuch ".

Das Szenendiagramm "Mesh Cloud Scripting" ist auf GameObjects beschränkt, die Sie der Szene unter dem GameObject hinzufügen, das die Mesh Cloud Scripting-Komponente enthält. Obwohl Mesh Cloud Scripting die Szenenhierarchie der restlichen Szene nicht direkt sehen kann, kann sie auf APIs zugreifen, die von der Mesh-App bereitgestellt werden, z. B. kann sie eine Liste der Benutzer in der Szene abrufen oder auf ein objekt reagieren, das ausgewählt wird.

Components and the Mesh Cloud Scripting Scene Graph

Beachten Sie im folgenden Diagramm, dass die Hierarchien für die Unity Scene und die Mesh Cloud Scripting Scene identisch sind. Die blauen Knoten im Unity Scene-Abschnitt stellen GameObjects dar; jedes GameObject verfügt über einen entsprechenden TransformNode im Mesh Cloud Scripting Scene Graph. Wenn ein TransformNode aktualisiert wird, bewirkt dies, dass die Transformation des Spielobjekts in der Unity-Szene auf denselben Wert aktualisiert wird.

Unity- und Mesh-Szenenhierarchien

Die Mesh Cloud Scripting-API verfügt über Typen, die nur einer Teilmenge des vollständigen Satzes von Unity-Komponenten zugeordnet sind. Es ist weiterhin gültig, eine Unity-Szene mit Komponenten zu erstellen, zu der die Mesh Cloud Scripting-API nicht zugeordnet werden kann. sie werden einfach für Mesh Cloud Scripting unsichtbar sein. Im Diagramm verfügt eine weißfarbige Komponente über einen entsprechenden Knoten im Szenendiagramm "Mesh Cloud Scripting"; eine grünfarbige Komponente nicht. Das Szenendiagramm "Mesh Cloud Scripting" verfügt nicht über einen Partikelsystemknoten, daher wird in unserem Beispiel die Partikelsystemkomponente in der Unity-Szene nicht in der entsprechenden Mesh Cloud Scripting-Szene angezeigt. Die umgebenden Komponenten und das eigene Spielobjekt befinden sich jedoch im Gitter-Cloud Scripting-Szenendiagramm. Dies bedeutet, dass Mesh Cloud Scripting das Partikelsystem um die Szene verschieben kann, indem es seine eigenen Spielobjekte bewegt, obwohl das Partikelsystem selbst für Cloud Scripting unsichtbar ist.

Die Mesh Cloud Scripting-API ermöglicht das Klonen von Knoten. Wenn die App einen Klon von "A" erstellt (der dem Knoten "A", GameObjectParent, in der Unity-Szene entspricht), klont die gesamte Unterstruktur von GameParentObject einschließlich des Partikelsystems Mesh Cloud Scripting nicht.

Erstellen von Gitter-Cloudskripting

Detaillierte Anweisungen zu Mesh Cloud Scripting finden Sie in den Artikeln "Erstellen eines einfachen Cloud Scripting-Projekts und des Programmierhandbuchs ". Hier geben wir einen kurzen Überblick.

Ein typisches Unity-Projekt mit einer Szene mit Mesh Cloud Scripting würde wie folgt auf dem Datenträger aussehen (die Ordner werden fett dargestellt):

  • Unity-Projekt
    • Ressourcen
      • Szenen
        • MyScene.unity
      • . MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

Jede Szene in Ihrem Unity-Projekt, die die MeshCloudScripting-Komponente enthält, verfügt über einen entsprechenden Ordner mit demselben Namen, der in einem "-Element enthalten ist. Ordner "MeshCloudScripting" in Ihrem Objektverzeichnis. Die Mesh Cloud Scripting-Komponente erstellt diesen Ordner und seinen anfänglichen Satz von Dateien, die zu einem vollständig funktionsfähigen, jedoch leeren Cloud Scripting Service kompiliert werden. Einige der anfänglichen Dateien werden oben angezeigt. Program.cs enthält Code im Textbaustein, der folgendes erledigt:

  • Konfigurieren eines IHostBuilder zum Starten des Diensts App .

  • Erstellen einer IHost-Instanz .

  • ausführen, bis die IHost Instanz abgeschlossen wird.

App.cs ist die Klasse, die Ihre Anwendungslogik hosten soll. Es implementiert die IHostedService-Schnittstelle , sodass sie zwei Einstiegspunkte hat: StartAsync und StopAsync. StartAsync wird einmal ausgelöst, wenn der IHost Dienst gestartet App werden kann. Außerdem wird ausgelöst, StopAsync wenn die IHost Ausführung eines ordnungsgemäßen Herunterfahrens erfolgt.

Szenendarstellung

Notieren Sie sich die Datei "scene.map " in der obigen Liste. Dies ist ein internes Detail, aber es ist hilfreich zu verstehen. Wenn die Unity-Szene manuell in der Benutzeroberfläche ausgelöst wird oder wenn die Unity-Szene im Editor wiedergegeben wird, schreibt die Komponente "Mesh Cloud Scripting" eine Datei "scene.map " in den entsprechenden Ordner "Mesh Cloud Scripting". Dies ist eine Darstellung der Szene als Mesh Cloud Scripting Scene Hierarchie; die Unity-Typen werden in Mesh Cloud Scripting-Typen konvertiert. Wenn der Mesh Cloud Scripting Service in der Cloud bereitgestellt wird, muss die ursprüngliche Unity-Szene nicht ausgeführt werden. Stattdessen wird die Datei "scene.map " geladen, die die anfängliche Szenenhierarchie definiert. Wenn ein Mesh-Client eine Verbindung mit dem Mesh Cloud Scripting Service herstellt, empfängt er die Mesh Cloud Scripting-Hierarchie und aktualisiert seine Unity-Szene entsprechend. Um dies zu ermöglichen, speichern wir zusätzlich IDs in Mesh Cloud Scripting-Bindungen, die zum Zuordnen der entsprechenden Unity-Objekte in der Szene verwendet werden.

Hinweis: Damit die obige Datei funktioniert, muss die Datei "scene.map " und die Unity-Szene übereinstimmen. Wenn sie z. B. aufgrund eines Exportfehlers nicht erkannt werden, und der Mesh Cloud Scripting Service und der Mesh-Client stellen keine Verbindung her.

Veröffentlichungsumgebungen mit Mesh Cloud Scripting

Wenn Sie eine Umgebung mit Mesh Cloud Scripting veröffentlichen, veröffentlicht sie den Environment and Mesh Cloud Scripting Service in Azure. Dies wird im folgenden Diagramm gezeigt:

Hochladen der Umgebungsvorlage und Cloud Scripting in die Cloud

Wenn Sie eine Änderung an Ihrer Szene vornehmen, sollten Sie in Unity die Wiedergabe drücken, um eine Vorschau der Szene mit dem neu erstellten und lokal ausgeführten Mesh Cloud Scripting Service anzuzeigen. Veröffentlichen Sie dann die geänderte Umgebung mit dem Gitteruploader. Die Veröffentlichung wird im Build beschrieben und veröffentlicht Ihre Umgebung und Bereitstellen von Cloud Scripting-Details für Build- und Veröffentlichungsartikel .

Authentifizierung in Mesh Cloud Scripting Service

Ein Cloud Scripting Service kann eine Liste der Benutzer behalten. Sobald ein Benutzer authentifiziert wurde, verfügt der Cloud Scripting Service über einen beständigen Bezeichner für den Benutzer über mehrere Sitzungen hinweg.

Das heißt, der Authentifizierungsfluss in Mesh Cloud Scripting Service erfordert keinen zusätzlichen Aufwand von Ihrem Ende. Es ist vollständig implizit und die beteiligten Parteien arbeiten daran, das Token abzurufen und automatisch zu überprüfen.

Hier sind die Beteiligten am Authentifizierungsfluss beteiligt:

Mesh-Toolkit: Als Tool, mit dem Cloud Scripting Services in der Cloud bereitgestellt werden, können Sie den Service Mode Cloud Scripting Service auswählen, der beim Überprüfen des Authentifizierungstokens verwendet wird. Dies kann in der Umgebungskonfigurationseinstellung in der Gitteruploader-Benutzeroberfläche erfolgen.

Microsoft Mesh-Dienst: Verantwortlich für das Ausgeben eines Tokens. Ohne ein Token können Benutzer nicht mit einem Cloud Scripting interagieren.

Microsoft Mesh: Der Einstiegspunkt für die Interaktion von Benutzern mit Mesh Cloud Scripting. Der Microsoft Mesh-Client ist für das Anfordern eines Zugriffstokens vom Microsoft Mesh-Dienst im Namen des Benutzers verantwortlich.

Mesh Cloud Scripting Service: Überprüft das Token, das er von Verbindungsanforderungen für den Microsoft Mesh-Dienst empfängt, und wählt dann einen persistenten Benutzerbezeichner aus dem Token aus.

Die Parteien arbeiten wie unten dargestellt zusammen:

Authentifizierungsablauf

Nächste Schritte