Conceitos básicos de script na nuvem
Leia uma visão geral do Mesh Cloud Scripting e do Mesh Visual Scripting
Diferenças entre Mesh Cloud Scripts e MonoBehaviours
Existem várias diferenças importantes entre o Mesh Cloud Scripting e o MonoBehaviours:
- Os Serviços de Script na Nuvem são escritos com base na API Mesh Cloud Scripting (em oposição à API Unity).
- Os Serviços de Script na Nuvem são executados na nuvem em um processo separado (em oposição ao cliente) e seus efeitos são sincronizados automaticamente com todos os clientes conectados.
Descrição Geral da Arquitetura
Para habilitar o Mesh Cloud Scripting, um serviço de aplicativo chamado Mesh Cloud Scripting Service é implantado em um grupo de recursos específico do Azure que você fornece. O Cloud Scripting é executado no back-end do Azure e consiste em um conjunto de scripts C# de servidor executados em um contêiner com um ponto de extremidade ao qual os clientes se conectam. No diagrama abaixo, você pode ver que há dois clientes que se conectam ao Cloud Scripting Service. O Cloud Scripting Service tem seu próprio gráfico de cena autoritativo (marcado como "A" no diagrama). O Cloud Scripting Service interage com este gráfico de cena através da API de gráfico de cena do Mesh Cloud Scripting.
O gráfico de cena do Mesh Cloud Scripting é sincronizado automaticamente da nuvem para todos os clientes conectados. Cada cliente tem uma cópia idêntica do gráfico de cena do Mesh Cloud Scripting (marcado com "B" no diagrama), que é mantido em sincronia com a versão autoritativa da nuvem. Quando o Mesh Cloud Scripting Service faz alterações no gráfico de cena na nuvem, essas alterações são propagadas para as cópias em todos os clientes.
Em cada cliente, o tempo de execução do Unity Mesh reage a alterações na instância do cliente do gráfico de cena do Mesh Cloud Scripting e atualiza a cena do Unity para refletir seu estado. Embora a API do gráfico de cena do Mesh Cloud Scripting e a API do gráfico de cena do Unity sejam diferentes, elas são mapeadas entre si e têm a mesma estrutura ou similar.
Script de nuvem de malha, objetos de jogo e gráfico de cena de script de nuvem de malha
Os objetos que eventualmente aparecem em um evento no aplicativo Mesh podem ser divididos em duas categorias:
Objetos que você adiciona ao seu Ambiente no Unity.
Objetos com os quais você personaliza seu evento . Como eles não faziam parte do ambiente, o Mesh Cloud Scripting não está ciente deles.
Construindo uma cena
Para habilitar o Mesh Cloud Scripting, sua cena deve ter um componente Mesh Cloud Scripting .
O componente é responsável por gerenciar os scripts criados e vinculá-los à cena Unity tanto no tempo de edição quanto no tempo de execução no aplicativo Mesh. O Mesh Cloud Scripting é uma tecnologia independente, mas tem uma integração total com o Unity. Você pode encontrar instruções para adicionar o Mesh Cloud Scripting GameObject no artigo chamado Criar um projeto simples de script na nuvem e informações mais detalhadas sobre scripts na seção Guia do programador.
O gráfico de cena do Mesh Cloud Scripting é limitado a GameObjects que você adiciona à cena sob o GameObject que contém o componente Mesh Cloud Scripting. Embora o Mesh Cloud Scripting não possa ver diretamente a hierarquia de cena do resto da cena, ele pode acessar APIs que o aplicativo Mesh fornece – por exemplo, ele pode obter uma lista de Usuários na cena ou reagir a um objeto que está sendo selecionado.
Componentes e o gráfico de cena de script de nuvem de malha
No diagrama abaixo, observe que as hierarquias para a Cena Unity e a Cena de Script da Nuvem de Malha são idênticas. Os nós azuis na seção Unity Scene representam GameObjects; cada GameObject tem um TransformNode correspondente no Mesh Cloud Scripting Scene Graph. Quando um TransformNode é atualizado, ele faz com que a transformação do objeto de jogo ao qual corresponde na cena Unity seja atualizada para o mesmo valor.
A API Mesh Cloud Scripting tem tipos que mapeiam apenas para um subconjunto do conjunto completo de componentes Unity. Ainda é válido criar uma cena Unity com componentes para os quais a API de script do Mesh Cloud não pode ser mapeada; eles simplesmente serão invisíveis para o Mesh Cloud Scripting. No diagrama, um componente de cor branca tem um nó correspondente no gráfico de cena do Mesh Cloud Scripting; um componente de cor verde não. O gráfico de cena do Mesh Cloud Scripting não tem um nó do sistema de partículas, portanto, em nosso exemplo, o componente do sistema de partículas na cena Unity não aparecerá na cena correspondente do Mesh Cloud Scripting. No entanto, seus componentes circundantes e o objeto de jogo proprietário estão no gráfico de cena do Mesh Cloud Scripting. Isso significa que o Mesh Cloud Scripting será capaz de mover o sistema de partículas ao redor da cena, movendo seus próprios objetos de jogo, mesmo que o próprio sistema de partículas seja invisível para o Cloud Scripting.
A API Mesh Cloud Scripting permite a clonagem de nós. Se o aplicativo fizer um clone de "A" (que corresponde ao nó "A", GameObjectParent, na cena Unity), isso clonará toda a subárvore de GameParentObject, incluindo o sistema de partículas que o Mesh Cloud Scripting não pode ver.
Criação de scripts de nuvem de malha
Instruções detalhadas sobre o Mesh Cloud Scripting podem ser encontradas nos artigos Create a simple Cloud Scripting project e Programmer's Guide . Aqui, damos uma breve visão geral.
Um projeto Unity típico contendo uma cena com Mesh Cloud Scripting teria a seguinte aparência no disco (as pastas são mostradas em negrito):
- Projeto Unity
- Ativos
- Cenas
- MyScene.unity
- . MeshCloudScripting
- MyScene
- MyScene.csproj
- Program.cs
- cena.mapa
- App.cs
- MyScene
- Cenas
- Ativos
Cada cena em seu projeto Unity que contém o componente MeshCloudScripting tem uma pasta correspondente do mesmo nome contida em um ". MeshCloudScripting" no diretório Assets. O componente Mesh Cloud Scripting cria essa pasta e seu conjunto inicial de arquivos que serão compilados para um serviço de script em nuvem totalmente funcional, embora vazio. Alguns dos arquivos iniciais são mostrados acima. Program.cs
Contém código clichê que cuida de:
configurando um IHostBuilder para iniciar o
App
serviço.criando uma instância IHost .
executando a instância até a
IHost
conclusão.
App.cs
é a classe que hospeda a lógica do aplicativo. Ele implementa a interface IHostedService , por isso tem dois pontos de entrada: StartAsync
e StopAsync
. StartAsync
é acionado uma vez, quando o IHost
está pronto para iniciar o App
serviço. Bem como, StopAsync
é acionado quando o está realizando um desligamento IHost
gracioso.
Representação de cena
Observe o arquivo scene.map na lista acima. Este é um detalhe interno, mas é útil para entender. Quando acionado manualmente na interface do usuário ou quando a cena Unity é reproduzida no Editor, o componente Mesh Cloud Scripting grava um arquivo scene.map na pasta Mesh Cloud Scripting correspondente. Esta é uma representação da cena como uma hierarquia de Cena de Script de Nuvem de Mesh; os tipos Unity são convertidos em tipos Mesh Cloud Scripting. Quando o Mesh Cloud Scripting Service é implantado na nuvem, ele não precisa da cena original do Unity para ser executado. Em vez disso, ele carrega o arquivo scene.map que define a hierarquia de cena inicial. Quando um cliente Mesh se conecta ao Mesh Cloud Scripting Service, ele recebe a hierarquia Mesh Cloud Scripting e atualiza sua cena Unity para corresponder. Para permitir isso, também armazenamos IDs em ligações do Mesh Cloud Scripting que são usadas para mapear para os objetos Unity correspondentes na cena.
Nota: Para que o acima funcione, o arquivo scene.map e a cena Unity devem corresponder. Se, por algum motivo, eles não o fizerem - por exemplo, como resultado de um erro de exportação - isso será detetado e o Mesh Cloud Scripting Service e o cliente Mesh não se conectarão.
Ambientes de publicação com Mesh Cloud Scripting
Quando você publica um Ambiente com Mesh Cloud Scripting, ele publicará o Environment and Mesh Cloud Scripting Service no Azure. Isto é mostrado no diagrama abaixo:
Ao fazer uma alteração na cena, você deve pressionar Reproduzir no Unity para visualizar a cena com o Mesh Cloud Scripting Service recém-criado e executado localmente. Em seguida, publique o ambiente modificado usando o Mesh Uploader. A publicação é descrita com mais detalhes em Compilar e publicar seu ambiente e Fornecer detalhes de script na nuvem para criar e publicar artigos.
Auth no Mesh Cloud Scripting Service
Um Cloud Scripting Service pode manter uma lista de quem são seus usuários. Depois que um usuário é autenticado, o Cloud Scripting Service tem um identificador persistente para o usuário em várias sessões.
Dito isso, o fluxo de autenticação no Mesh Cloud Scripting Service não requer nenhum esforço extra do seu lado. É totalmente implícito e as partes envolvidas trabalham para obter o token e validá-lo automaticamente.
Aqui estão as partes envolvidas no fluxo de autenticação:
Kit de ferramentas Mesh: Como a ferramenta através da qual os Serviços de Script na Nuvem são implantados na nuvem, você pode escolher o Service Mode
que seu Serviço de Script na Nuvem usa na validação do token de autenticação. Isso pode ser feito na configuração de ambiente na interface do usuário do Mesh Uploader.
Microsoft Mesh Service: Responsável pela emissão de um token. Sem um token, os usuários não podem interagir com um Cloud Scripting.
Microsoft Mesh: O ponto de entrada para como os usuários interagem com o Mesh Cloud Scripting. O cliente Microsoft Mesh é responsável por solicitar um token de acesso do Serviço Microsoft Mesh em nome do usuário.
Mesh Cloud Scripting Service: valida o token que recebe de solicitações de conexão em relação ao Microsoft Mesh Service e, em seguida, seleciona um identificador de usuário persistente do token.
As partes trabalham em conjunto, como ilustrado a seguir: