Concetti di base relativi al cloud scripting
Leggere una panoramica dello scripting cloud mesh e degli script visivi mesh
Esistono diverse differenze principali tra scripting cloud mesh e MonoBehaviours:
- I servizi di scripting cloud vengono scritti nell'API Mesh Cloud Scripting (anziché nell'API Unity).
- I servizi di scripting cloud vengono eseguiti nel cloud in un processo separato (anziché sul client) e i relativi effetti vengono sincronizzati automaticamente con tutti i client connessi.
Per abilitare lo scripting del cloud mesh, un servizio applicazione denominato Servizio di scripting cloud mesh viene distribuito in un determinato gruppo di risorse di Azure fornito. Lo scripting cloud viene eseguito sul back-end di Azure ed è costituito da un set di script C# del server in esecuzione in un contenitore con un endpoint a cui si connettono i client. Nel diagramma seguente è possibile notare che esistono due client che si connettono al servizio di scripting cloud. Il servizio di scripting cloud ha un proprio grafo di scena autorevole (contrassegnato come "A" nel diagramma). Il servizio di scripting cloud interagisce con questo grafico della scena tramite l'API a grafo della scena mesh cloud scripting.
Il grafico della scena mesh cloud scripting viene sincronizzato automaticamente dal cloud a tutti i client connessi. Ogni client ha una copia identica del grafico della scena mesh cloud scripting (contrassegnato come "B" nel diagramma), che viene mantenuto sincronizzato con la versione cloud autorevole. Quando il servizio di scripting cloud mesh apporta modifiche al grafico della scena nel cloud, queste modifiche vengono propagate alle copie in tutti i client.
In ogni client, il runtime di Unity Mesh reagisce alle modifiche nell'istanza del client del grafico della scena di scripting del cloud mesh e aggiorna la scena Unity in modo che rifletta il relativo stato. Anche se l'API del grafico della scena Mesh Cloud Scripting e l'API del grafico della scena unity sono diverse, vengono mappate tra loro e hanno la stessa struttura o simile.
Gli oggetti che alla fine vengono visualizzati in un evento nell'app Mesh possono essere suddivisi in due categorie:
Oggetti aggiunti all'ambiente in Unity.
Oggetti con cui personalizzare l'evento . Poiché questi elementi non fanno parte dell'ambiente, lo scripting del cloud mesh non è a conoscenza di essi.
Per abilitare lo scripting del cloud mesh, la scena deve avere un componente di scripting cloud mesh.
Il componente è responsabile della gestione degli script creati e dell'associazione alla scena Unity sia in fase di modifica che in fase di esecuzione nell'app Mesh. Mesh Cloud Scripting è una tecnologia autonoma, ma ha una stretta integrazione con Unity. Per istruzioni sull'aggiunta di Mesh Cloud Scripting GameObject, vedere l'articolo Creare un progetto di scripting cloud semplice e informazioni più dettagliate sulla creazione di script nella sezione Guida per programmatori.
Il grafico della scena mesh cloud scripting è limitato agli oggetti GameObject aggiunti alla scena nel GameObject che contiene il componente Mesh Cloud Scripting. Sebbene Mesh Cloud Scripting non possa visualizzare direttamente la gerarchia della scena del resto della scena, può accedere alle API fornite dall'app Mesh, ad esempio, può ottenere un elenco di Utenti nella scena o reagire a un oggetto selezionato.
Nel diagramma seguente si noti che le gerarchie per la scena Unity e la scena di scripting del cloud mesh sono identiche. I nodi blu nella sezione Scene unity rappresentano GameObjects; ogni GameObject ha un oggetto TransformNode corrispondente nel grafico della scena di scripting del cloud mesh. Quando un oggetto TransformNode viene aggiornato, determina l'aggiornamento della trasformazione dell'oggetto gioco nella scena unity allo stesso valore.
L'API Mesh Cloud Scripting include tipi che eseguono il mapping solo a un subset del set completo di componenti unity. È ancora valido creare una scena unity con componenti a cui l'API di scripting del cloud mesh non può eseguire il mapping; saranno semplicemente invisibili a Mesh Cloud Scripting. Nel diagramma, un componente di colore bianco ha un nodo corrispondente nel grafico della scena mesh cloud scripting; un componente di colore verde non lo è. Il grafico della scena Mesh Cloud Scripting non ha un nodo del sistema di particella, quindi nell'esempio il componente del sistema di particella nella scena Unity non verrà visualizzato nella scena mesh cloud scripting corrispondente. Tuttavia, i componenti circostanti e l'oggetto gioco proprietario si trovano nel grafico della scena Mesh Cloud Scripting. Ciò significa che Mesh Cloud Scripting sarà in grado di spostare il sistema di particelle intorno alla scena spostando i propri oggetti gioco, anche se il sistema di particelle stesso è invisibile a Cloud Scripting.
L'API Mesh Cloud Scripting consente la clonazione di nodi. Se l'app crea un clone di "A" (che corrisponde al nodo "A", GameObjectParent, nella scena Unity), l'intero sottoalbero di GameParentObject, incluso il sistema di particella Mesh Cloud Scripting, non può essere visualizzato.
Le istruzioni dettagliate su Mesh Cloud Scripting sono disponibili negli articoli Creare un semplice progetto di scripting cloud e guida per programmatori. In questo caso viene fornita una breve panoramica.
Un tipico progetto Unity contenente una scena con Mesh Cloud Scripting sarà simile al seguente sul disco (le cartelle vengono visualizzate in grassetto):
- Progetto Unity
- Asset
- Scene
- MyScene.unity
- . MeshCloudScripting
- MyScene
- MyScene.csproj
- Program.cs
- scene.map
- App.cs
- MyScene
- Scene
- Asset
Ogni scena nel progetto Unity che contiene il componente MeshCloudScripting ha una cartella corrispondente con lo stesso nome contenuto in un oggetto ". MeshCloudScripting" nella directory Assets. Il componente Mesh Cloud Scripting crea questa cartella e il relativo set iniziale di file che verranno compilati in un servizio di scripting cloud completamente funzionante, anche se vuoto. Alcuni dei file iniziali sono visualizzati sopra. Program.cs
contiene il codice boilerplate che si occupa di:
configurazione di un IHostBuilder per avviare il
App
servizio.compilazione di un'istanza di IHost .
esecuzione dell'istanza
IHost
fino al completamento.
App.cs
è la classe che ospita la logica dell'applicazione. Implementa l'interfaccia IHostedService , quindi ha due punti di ingresso: StartAsync
e StopAsync
. StartAsync
viene attivato una sola volta, quando è IHost
pronto per avviare il App
servizio. Inoltre, StopAsync
viene attivato quando l'oggetto IHost
esegue un arresto normale.
Prendere nota del file scene.map nell'elenco precedente. Si tratta di un dettaglio interno, ma è utile capire. Quando viene attivato manualmente nell'interfaccia utente o quando la scena unity viene riprodotta nell'editor, il componente Scripting mesh cloud scrive un file scene.map nella cartella Mesh Cloud Scripting corrispondente. Si tratta di una rappresentazione della scena come gerarchia della scena di scripting cloud mesh; I tipi Unity vengono convertiti in tipi di scripting cloud mesh. Quando il servizio di scripting cloud mesh viene distribuito nel cloud, non è necessario eseguire la scena originale di Unity. Carica invece il file scene.map che definisce la gerarchia iniziale della scena. Quando un client Mesh si connette al servizio mesh cloud scripting, riceve la gerarchia di scripting del cloud mesh e ne aggiorna la scena Unity in modo che corrisponda. A tale scopo, vengono archiviati anche gli ID nelle associazioni di scripting cloud mesh usate per eseguire il mapping agli oggetti Unity corrispondenti nella scena.
Nota: per il corretto funzionamento di quanto sopra, il file scene.map e la scena unity devono corrispondere. Se per qualche motivo non lo fanno, ad esempio, a causa di un errore di esportazione, verrà rilevato e il client Mesh Cloud Scripting Service and Mesh non si connetterà.
Quando si pubblica un ambiente con scripting cloud mesh, verrà pubblicato il servizio Di scripting di ambiente e mesh cloud in Azure. Questo è illustrato nel diagramma seguente:
Quando si apporta una modifica alla scena, premere Play in Unity per visualizzare in anteprima la scena con il servizio Mesh Cloud Scripting appena compilato e in locale. Pubblicare quindi l'ambiente modificato usando il caricamento mesh. La pubblicazione è descritta in modo più dettagliato negli articoli Creare e pubblicare l'ambiente e fornire dettagli sullo scripting cloud per la compilazione e la pubblicazione.
Un servizio di scripting cloud può mantenere un elenco degli utenti. Dopo l'autenticazione di un utente, il servizio cloud scripting ha un identificatore permanente per l'utente in più sessioni.
Detto questo, il flusso di autenticazione nel servizio di scripting cloud mesh non richiede alcun impegno aggiuntivo dalla fine. È completamente implicito e le parti coinvolte lavorano per ottenere il token e convalidarlo automaticamente.
Ecco le parti coinvolte nel flusso di autenticazione:
Toolkit mesh: come strumento tramite il quale i servizi di scripting cloud vengono distribuiti nel cloud, è possibile scegliere il Service Mode
servizio di scripting cloud usato per convalidare il token di autenticazione. Questa operazione può essere eseguita nell'impostazione Configurazione ambiente nell'interfaccia utente del caricatore mesh.
Servizio Microsoft Mesh: responsabile del rilascio di un token. Senza un token, gli utenti non possono interagire con uno scripting cloud.
Microsoft Mesh: punto di ingresso per l'interazione degli utenti con Mesh Cloud Scripting. Il client Microsoft Mesh è responsabile della richiesta di un token di accesso dal servizio Microsoft Mesh per conto dell'utente.
Servizio di scripting cloud mesh: convalida il token ricevuto dalle richieste di connessione al servizio Microsoft Mesh e quindi seleziona un identificatore utente permanente dal token.
Le parti lavorano insieme come illustrato di seguito: