Dela via


Grundläggande begrepp för molnskript

Läs en översikt över Mesh Cloud Scripting och Mesh Visual Scripting

Skillnader mellan Mesh Cloud Scripts och MonoBehaviours

Det finns flera stora skillnader mellan Mesh Cloud Scripting och MonoBehaviours:

  • Cloud Scripting Services skrivs mot Mesh Cloud Scripting API (i motsats till Unity API).
  • Cloud Scripting Services körs i molnet i en separat process (till skillnad från på klienten) och deras effekter synkroniseras automatiskt med alla anslutna klienter.

Arkitekturöversikt

För att aktivera Mesh Cloud Scripting distribueras en programtjänst med namnet Mesh Cloud Scripting Service till en viss Azure-resursgrupp som du tillhandahåller. Cloud Scripting körs på Azure-serverdelen och består av en uppsättning C#-serverskript som körs i en container med en slutpunkt som klienterna ansluter till. I diagrammet nedan kan du se att det finns två klienter som ansluter till Cloud Scripting Service. Cloud Scripting Service har en egen auktoritativ scengraf (märkt "A" i diagrammet). Cloud Scripting Service interagerar med det här scendiagrammet via API:et för Mesh Cloud Scripting-scendiagram.

Ett diagram över arkitekturen för molnskript.

Scendiagrammet Mesh Cloud Scripting synkroniseras automatiskt från molnet till alla anslutna klienter. Varje klient har en identisk kopia av scendiagrammet Mesh Cloud Scripting (märkt "B" i diagrammet), som hålls synkroniserad med den auktoritativa molnversionen. När Mesh Cloud Scripting Service gör ändringar i scendiagrammet i molnet sprids dessa ändringar till kopiorna på alla klienter.

På varje klient reagerar Unity Mesh-körningen på ändringar i klientens instans av Mesh Cloud Scripting-scendiagrammet och uppdaterar Unity-scenen så att den återspeglar dess tillstånd. Även om Api:et för scendiagram i Mesh Cloud Scripting och API:et för Unity-scengrafen skiljer sig åt, mappar de nära varandra och har samma eller liknande struktur.

Mesh Cloud Scripting, Game Objects och Mesh Cloud Scripting Scene Graph

Objekt som så småningom visas i en händelse i Mesh-appen kan delas in i två kategorier:

  1. Objekt som du lägger till i din miljö i Unity.

  2. Objekt som du anpassar din händelse med. Eftersom dessa inte var en del av miljön känner Mesh Cloud Scripting inte till dem.

Skapa en scen

För att kunna aktivera Mesh Cloud Scripting måste din scen ha en Mesh Cloud Scripting-komponent .

En skärmbild av Mesh Cloud Scripting-komponenten som är kopplad till GameObject.

Komponenten ansvarar för att hantera de skript som du skapar och binda dem till Unity-scenen både vid redigeringstid och körning i Mesh-appen. Mesh Cloud Scripting är en fristående teknik, men den har en nära integrering med Unity. Du hittar instruktioner för att lägga till Mesh Cloud Scripting GameObject i artikeln Skapa ett enkelt molnskriptprojekt och mer detaljerad information om skript i avsnittet Programmerareguide .

Scendiagrammet Mesh Cloud Scripting är begränsat till GameObjects som du lägger till i scenen under GameObject som innehåller Mesh Cloud Scripting-komponenten. Även om Mesh Cloud Scripting inte direkt kan se scenhierarkin i resten av scenen, kan den komma åt API:er som Mesh-appen tillhandahåller, till exempel kan den hämta en lista över användare i scenen eller reagera på att ett objekt väljs.

Komponenter och Mesh Cloud Scripting Scene Graph

Observera att hierarkierna för Unity Scene och Mesh Cloud Scripting Scene är identiska i diagrammet nedan. De blå noderna i avsnittet Unity Scene representerar GameObjects; varje GameObject har en motsvarande TransformNode i Mesh Cloud Scripting Scene Graph. När en TransformNode uppdateras gör det att transformering av spelobjektet som den motsvarar i Unity Scene uppdateras till samma värde.

Unity- och Mesh-scenhierarkier

Mesh Cloud Scripting-API:et har typer som endast mappas till en delmängd av den fullständiga uppsättningen Unity-komponenter. Det är fortfarande giltigt att skapa en Unity-scen med komponenter som Mesh Cloud Scripting-API:et inte kan mappas till. de kommer helt enkelt att vara osynliga för Mesh Cloud Scripting. I diagrammet har en vitfärgad komponent en motsvarande nod i scendiagrammet Mesh Cloud Scripting. en grön-färgad komponent inte. Scendiagrammet Mesh Cloud Scripting har ingen nod för partikelsystem, så i vårt exempel visas inte komponenten för partikelsystem i Unity-scenen i motsvarande Mesh Cloud Scripting-scen. De omgivande komponenterna och ägande spelobjektet finns dock i scendiagrammet Mesh Cloud Scripting. Det innebär att Mesh Cloud Scripting kommer att kunna flytta partikelsystemet runt scenen genom att flytta sina ägande spelobjekt även om själva partikelsystemet är osynligt för cloud scripting.

Mesh Cloud Scripting API tillåter kloning av noder. Om appen gör en klon av "A" (som motsvarar noden "A", GameObjectParent, i Unity-scenen) klonar detta hela underträdet i GameParentObject, inklusive det partikelsystem som Mesh Cloud Scripting inte kan se.

Redigera Mesh Cloud Scripting

Detaljerade anvisningar om Mesh Cloud Scripting finns i artiklarna Skapa ett enkelt projekt för molnskript och Programmerarens guide . Här ger vi en kort översikt.

Ett typiskt Unity-projekt som innehåller en scen med Mesh Cloud Scripting skulle se ut så här på disken (mapparna visas som fetstil):

  • Unity-projekt
    • Tillgångar
      • Scener
        • MyScene.unity
      • . MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

Varje scen i Ditt Unity-projekt som innehåller MeshCloudScripting-komponenten har en motsvarande mapp med samma namn som i en ". MeshCloudScripting-mapp i katalogen Tillgångar. Mesh Cloud Scripting-komponenten skapar den här mappen och dess första uppsättning filer som kompileras till en helt fungerande, men tom, molnskripttjänst. Några av de första filerna visas ovan. Program.cs innehåller pannplåtskod som tar hand om:

App.cs är den klass som är värd för din programlogik. Det implementerar IHostedService-gränssnittet , så det har två startpunkter: StartAsync och StopAsync. StartAsync utlöses en gång när IHost är redo att starta App tjänsten. Dessutom StopAsync utlöses när IHost utför en graciös avstängning.

Scenrepresentation

Anteckna filen scene.map i listan ovan. Det här är en intern detalj, men det är användbart att förstå. När den utlöses manuellt i användargränssnittet, eller när Unity-scenen spelas upp i redigeraren, skriver Mesh Cloud Scripting-komponenten en scene.map-fil till motsvarande Mesh Cloud Scripting-mapp. Det här är en representation av scenen som en Mesh Cloud Scripting Scene-hierarki. Unity-typerna konverteras till Mesh Cloud Scripting-typer. När Mesh Cloud Scripting Service distribueras till molnet behöver den inte den ursprungliga Unity-scenen för att köras. I stället läses filen scene.map in som definierar den inledande scenhierarkin. När en Mesh-klient ansluter till Mesh Cloud Scripting Service tar den emot Mesh Cloud Scripting-hierarkin och uppdaterar unity-scenen så att den matchar. För att tillåta detta lagrar vi dessutom ID:er i Mesh Cloud Scripting-bindningar som används för att mappa till motsvarande Unity-objekt i scenen.

Obs! För att ovanstående ska fungera måste filen scene.map och Unity-scenen matcha. Om de av någon anledning inte gör det, till exempel på grund av ett exportfel, identifieras detta och Mesh Cloud Scripting Service och Mesh-klienten ansluter inte.

Publicera miljöer med Mesh Cloud Scripting

När du publicerar en miljö med Mesh Cloud Scripting publicerar den tjänsten Environment and Mesh Cloud Scripting till Azure. Detta visas i diagrammet nedan:

Ladda upp miljömallen och molnskript till molnet

När du gör en ändring i din scen bör du trycka på Spela upp i Unity för att förhandsgranska scenen med den nybyggda och lokalt körande Mesh Cloud Scripting Service. Publicera sedan den ändrade miljön med mesh-uppladdaren. Publicering beskrivs mer detaljerat i artikeln Skapa och publicera din miljö och Ange information om molnskript för att skapa och publicera artiklar.

Autentisering i Mesh Cloud Scripting Service

En molnskripttjänst kan behålla en lista över vilka dess användare är. När en användare har autentiserats har Cloud Scripting Service en beständig identifierare för användaren över flera sessioner.

Som sagt, Auth-flödet i Mesh Cloud Scripting Service kräver inte någon extra ansträngning från din sida. Det är helt implicit och de inblandade parterna arbetar med att hämta token och verifiera den automatiskt.

Här är de parter som är inblandade i autentiseringsflödet:

Mesh toolkit: Som det verktyg genom vilket Cloud Scripting Services distribueras till molnet kan du välja vilken Service Mode molnskripttjänst som används för att verifiera autentiseringstoken. Detta kan göras i inställningen Miljökonfiguration i Mesh Uploader-användargränssnittet.

Microsoft Mesh Service: Ansvarar för att utfärda en token. Utan en token kan användarna inte interagera med ett molnskript.

Microsoft Mesh: Startpunkten för hur användare interagerar med Mesh Cloud Scripting. Microsoft Mesh-klienten ansvarar för att begära en åtkomsttoken från Microsoft Mesh Service för användarens räkning.

Mesh Cloud Scripting Service: Validerar den token som den tar emot från anslutningsbegäranden mot Microsoft Mesh Service och väljer sedan ut en beständig användaridentifierare från token.

Parterna samarbetar enligt nedan:

Autentiseringsflöde

Nästa steg