Freigeben über


Grundlegende Konzepte für Cloudskripts

Lesen Sie eine Übersicht über Mesh Cloud Scripting und Mesh Visual Scripting.

Unterschiede zwischen Mesh Cloud Scripts und MonoBehaviours

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

  • Cloud Scripting Services werden für die Mesh Cloud Scripting-API (im Gegensatz zur Unity-API) geschrieben.
  • Cloud Scripting Services werden in der Cloud in einem separaten Prozess (und nicht auf dem Client) ausgeführt, und ihre Auswirkungen 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 im Azure-Back-End ausgeführt und besteht aus einer Reihe von C#-Serverskripts, die in einem Container mit einem Endpunkt ausgeführt werden, mit dem die Clients eine Verbindung herstellen. Im folgenden Diagramm sehen Sie, dass es zwei Clients gibt, die eine Verbindung mit dem Cloud Scripting Service herstellen. Cloud Scripting Service verfügt über einen eigenen autoritativen Szenengraphen (im Diagramm mit "A" gekennzeichnet). Cloud Scripting Service interagiert mit diesem Szenendiagramm über die Szenendiagramm-API für Mesh Cloud Scripting.

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 Mesh Cloud Scripting-Szenendiagramms (im Diagramm mit "B" gekennzeichnet), das mit der autoritativen Cloudversion synchronisiert wird. Wenn mesh Cloud Scripting Service Änderungen am Szenendiagramm in der Cloud vornimmt, werden diese Änderungen an die Kopien auf allen Clients weitergegeben.

Auf jedem Client reagiert die Unity Mesh-Runtime auf Änderungen im instance des Mesh Cloud Scripting-Szenendiagramms des Clients und aktualisiert die Unity-Szene, um ihren Zustand widerzuspiegeln. Obwohl sich die Szenendiagramm-API für Mesh Cloud Scripting und die Unity-Szenendiagramm-API unterscheiden, sind sie eng miteinander zugeordnet und weisen die gleiche oder ähnliche Struktur auf.

Mesh Cloud Scripting, Game Objects und 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 denen Sie Ihr Ereignis anpassen . Da diese nicht Teil der Umgebung waren, sind sie von Mesh Cloud Scripting nicht bekannt.

Erstellen einer Szene

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

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

Die Komponente ist für die Verwaltung der von Ihnen erstellten Skripts und deren Bindung an die Unity-Szene sowohl zur Bearbeitungszeit als auch zur Laufzeit in der Mesh-App verantwortlich. Mesh Cloud Scripting ist eine eigenständige Technologie, die jedoch eng mit Unity integriert ist. Anweisungen zum Hinzufügen des Mesh Cloud Scripting GameObject finden Sie im Artikel Erstellen eines einfachen Cloud scripting-Projekts und ausführlichere Informationen zum Skripten im Abschnitt Programmiererhandbuch .

Das Mesh Cloud Scripting-Szenendiagramm ist auf GameObjects beschränkt, die Sie der Szene unter dem GameObject hinzufügen, das die Komponente Mesh Cloud Scripting enthält. Obwohl Mesh Cloud Scripting die Szenenhierarchie der restlichen Szene nicht direkt sehen kann, kann es auf APIs zugreifen, die die Mesh-App bereitstellt. Beispielsweise kann eine Liste der Benutzer in der Szene abgerufen oder auf ein ausgewähltes Objekt reagiert werden.

Komponenten und das Szenendiagramm für Mesh Cloud Scripting

Beachten Sie im folgenden Diagramm, dass die Hierarchien für die Unity-Szene und die Mesh Cloud Scripting Scene identisch sind. Die blauen Knoten im Abschnitt Unity-Szene stellen GameObjects dar; jedes GameObject verfügt über einen entsprechenden TransformNode im Szenengraphen der Mesh Cloud Scripting. Wenn ein TransformNode aktualisiert wird, bewirkt dies, dass die Transformation des Spielobjekts, dem es in der Unity-Szene entspricht, auf den gleichen 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, denen die Mesh Cloud Scripting-API nicht zugeordnet werden kann. Sie sind für Mesh Cloud Scripting einfach unsichtbar. Im Diagramm verfügt eine weiß gefärbte Komponente über einen entsprechenden Knoten im Szenendiagramm mesh Cloud Scripting; eine grün gefärbte Komponente nicht. Das Mesh Cloud Scripting-Szenendiagramm verfügt nicht über einen Partikelsystemknoten, sodass in unserem Beispiel die Partikelsystemkomponente in der Unity-Szene nicht in der entsprechenden Mesh Cloud Scripting-Szene angezeigt wird. Die umgebenden Komponenten und das besitzende Spielobjekt befinden sich jedoch im Szenengraphen mesh Cloud Scripting. 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 GameParentObjecteinschließlich des Partikelsystems Mesh Cloud Scripting kann nicht angezeigt werden.

Erstellen von Mesh Cloud Scripting

Ausführliche Anweisungen zum Mesh Cloud Scripting finden Sie in den Artikeln Erstellen eines einfachen Cloud scripting-Projekts und Programmierhandbuch . Hier geben wir einen kurzen Überblick.

Ein typisches Unity-Projekt, das eine Szene mit Mesh Cloud Scripting enthält, sieht auf dem Datenträger wie folgt aus (die Ordner werden fett dargestellt):

  • Unity-Projekt
    • Medienobjekte
      • 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. MeshCloudScripting"-Ordner in Ihrem Assets-Verzeichnis. Die Mesh Cloud Scripting-Komponente erstellt diesen Ordner und seinen anfänglichen Satz von Dateien, die in einen vollständig funktionierenden, aber leeren Cloud Scripting Service kompiliert werden. Einige der anfänglichen Dateien werden oben gezeigt. Program.cs enthält Codebausteine, der Folgendes übernimmt:

App.cs ist die Klasse, die Ihre Anwendungslogik hostet. Sie implementiert die IHostedService-Schnittstelle , sodass sie über zwei Einstiegspunkte verfügt: StartAsync und StopAsync. StartAsync wird einmal ausgelöst, wenn der IHost bereit ist, den App Dienst zu starten. Wird auch ausgelöst, StopAsync wenn das IHost ordnungsgemäß heruntergefahren wird.

Szenendarstellung

Notieren Sie sich die Datei scene.map in der obigen Liste. Dies ist ein internes Detail, aber es ist nützlich zu verstehen. Wenn sie manuell auf der Benutzeroberfläche ausgelöst wird oder die Unity-Szene im Editor wiedergegeben wird, schreibt die Komponente Mesh Cloud Scripting eine Scene.map-Datei in den entsprechenden Mesh Cloud Scripting-Ordner. Dies ist eine Darstellung der Szene als Mesh Cloud Scripting Scene-Hierarchie. Die Unity-Typen werden in Mesh Cloud Scripting-Typen konvertiert. Wenn 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 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 verwendet werden, um den entsprechenden Unity-Objekten in der Szene zuzuordnen.

Hinweis: Damit das oben genannte funktioniert, müssen die Datei scene.map und die Unity-Szene übereinstimmen. Wenn dies aus irgendeinem Grund nicht der Fall ist , z. B. als Ergebnis eines Exportfehlers, wird dies erkannt, und Mesh Cloud Scripting Service und Mesh-Client stellen keine Verbindung her.

Veröffentlichungsumgebungen mit Mesh Cloud Scripting

Wenn Sie eine Umgebung mit Mesh Cloud Scripting veröffentlichen, werden die Umgebung und der Mesh Cloud Scripting Service in Azure veröffentlicht. Dies ist im folgenden Diagramm dargestellt:

Hochladen der Umgebungsvorlage und Cloud Scripting in die Cloud

Wenn Sie eine Änderung an Ihrer Szene vornehmen, sollten Sie in Unity auf Wiedergeben klicken, 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 mithilfe des Mesh-Uploaders. Die Veröffentlichung wird in den Artikeln Erstellen und Veröffentlichen Ihrer Umgebung und Bereitstellen von Cloudskripts für Build- und Veröffentlichungsdetails ausführlicher beschrieben.

Authentifizierung im Mesh Cloud Scripting Service

Ein Cloud Scripting Service kann eine Liste der Benutzer führen. Nachdem ein Benutzer authentifiziert wurde, verfügt der Cloud Scripting Service über einen persistenten 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 aus. Es ist vollständig implizit, und die beteiligten Parteien arbeiten daran, das Token zu erhalten und es automatisch zu überprüfen.

Im Folgenden sind die Am Authentifizierungsflow beteiligten Parteien aufgeführt:

Mesh-Toolkit: Als Tool, mit dem Cloud Scripting Services in der Cloud bereitgestellt werden, können Sie das auswählen, das Service Mode Ihr Cloud Scripting-Dienst zum Überprüfen des Authentifizierungstokens verwendet. Dies kann in der Einstellung Umgebungskonfiguration auf der Benutzeroberfläche des Mesh-Uploaders erfolgen.

Microsoft Mesh-Dienst: Verantwortlich für die Ausgabe 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 die Anforderung 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 Microsoft Mesh Service empfängt, und wählt dann einen persistenten Benutzerbezeichner aus dem Token aus.

Die Parteien arbeiten wie unten dargestellt zusammen:

Authentifizierungsablauf

Nächste Schritte