Compartilhar via


Conceitos básicos de script de nuvem

Leia uma visão geral do Script de Nuvem de Malha e do Script Visual de Malha

Diferenças entre Mesh Cloud Scripts e MonoBehaviours

Existem várias diferenças importantes entre Mesh Cloud Scripting e MonoBehaviours:

  • Os serviços de script de nuvem são gravados na API de script de nuvem de malha (em oposição à API do Unity).
  • Os serviços de script de nuvem são executados na nuvem em um processo separado (em vez de no cliente) e seus efeitos são sincronizados automaticamente com todos os clientes conectados.

Visã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 em execução 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 com "A" no diagrama). O Cloud Scripting Service interage com esse gráfico de cena por meio da API de gráfico de cena do Cloud Scripting de malha.

Um diagrama da arquitetura de script de nuvem.

O gráfico de cena do Script de Nuvem de Malha é sincronizado automaticamente da nuvem para todos os clientes conectados. Cada cliente tem uma cópia idêntica do gráfico de cena do Script de Nuvem de Malha (marcado com "B" no diagrama), que é mantido em sincronia com a versão de nuvem autoritativa. 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 às 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 de gráfico de cena do Mesh Cloud Scripting e a API de gráfico de cena do Unity sejam diferentes, elas são mapeadas entre si e têm a mesma estrutura ou semelhante.

Script de nuvem de malha, objetos de jogo e o 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:

  1. Objetos que você adiciona ao seu ambiente no Unity.

  2. Objetos com os quais você personaliza seu evento . Como eles não faziam parte do Ambiente, o Mesh Cloud Scripting não os conhece.

Construindo uma cena

Para habilitar o Script de Nuvem de Malha, sua cena deve ter um componente de Script de Nuvem de Malha.

Uma captura de tela do componente Script de Nuvem de Malha anexado ao GameObject.

O componente é responsável por gerenciar os scripts que você cria e vinculá-los à cena do Unity no momento da edição e no tempo de execução no aplicativo Mesh. O Mesh Cloud Scripting é uma tecnologia autônoma, mas tem uma forte integração com o Unity. Você pode encontrar instruções para adicionar o GameObject de script de nuvem de malha no artigo chamado Criar um projeto simples de script de nuvem e informações mais detalhadas sobre scripts na seção Guia do programador.

O gráfico de cena de Script de Nuvem de Malha é limitado a GameObjects que você adiciona à cena no GameObject que contém o componente Script de Nuvem de Malha. Embora o Mesh Cloud Scripting não possa ver diretamente a hierarquia de cena do restante 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 da Cena do Unity e da Cena de Script de Nuvem de Malha são idênticas. Os nós azuis na seção Cena do Unity representam GameObjects; cada GameObject tem um TransformNode correspondente no Gráfico de Cena de Script de Nuvem de Malha. Quando um TransformNode é atualizado, ele faz com que a transformação do objeto de jogo ao qual ele corresponde na cena do Unity seja atualizada para o mesmo valor.

Hierarquias de cena do Unity e da malha

A API de Script de Nuvem de Malha tem tipos que são mapeados para apenas um subconjunto do conjunto completo de componentes do Unity. Ainda é válido criar uma cena do Unity com componentes para os quais a API de script de nuvem de malha 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 Script de Nuvem de Malha; um componente de cor verde não. O gráfico de cena do Script de nuvem de malha não tem um nó do sistema de partículas, portanto, em nosso exemplo, o componente do sistema de partículas na cena do Unity não aparecerá na cena de script de nuvem de malha correspondente. No entanto, seus componentes circundantes e o objeto de jogo proprietário estão no gráfico de cena do Script de Nuvem de Malha. Isso significa que o Script de Nuvem de Malha será capaz de mover o sistema de partículas pela cena movendo seus próprios objetos de jogo, mesmo que o próprio sistema de partículas seja invisível para o Script de Nuvem.

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 do 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 Criar um projeto simples do Cloud Scripting e Guia do Programador. Aqui, damos uma breve visão geral.

Um projeto típico do Unity contendo uma cena com Script de Nuvem de Malha teria a seguinte aparência no disco (as pastas são mostradas em negrito):

  • Projeto Unity
    • Ativos
      • Cenas
        • MyScene.unity
      • . MalhaCloudScripting
        • Minha Cena
          • MinhaCena.csproj
          • Module.vb
          • cena.mapa
          • App.cs

Cada cena em seu projeto do Unity que contém o componente MeshCloudScripting tem uma pasta correspondente com o mesmo nome contida em um arquivo ". MeshCloudScripting" no diretório Assets. O componente Script de Nuvem de Malha cria essa pasta e seu conjunto inicial de arquivos que serão compilados em um Serviço de Script de Nuvem totalmente funcional, embora vazio. Alguns dos arquivos iniciais são mostrados acima. Program.cs contém código clichê que cuida de:

App.cs é a classe que hospeda a lógica do aplicativo. Ele implementa a interface IHostedService , portanto, tem dois pontos de entrada: StartAsync e StopAsync. StartAsync é acionado uma vez, quando o está IHost pronto para iniciar o App serviço. Além disso, StopAsync é acionado quando o IHost está executando um desligamento normal.

Representação de cena

Observe o arquivo scene.map na lista acima. Este é um detalhe interno, mas é útil entender. Quando acionado manualmente na interface do usuário ou quando a cena do Unity é reproduzida no Editor, o componente Script de Nuvem de Malha grava um arquivo scene.map na pasta de Script de Nuvem de Malha correspondente. Esta é uma representação da cena como uma hierarquia de Cena de Script de Nuvem de Malha; os tipos do Unity são convertidos em tipos de script de nuvem de malha. 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 do Unity para corresponder. Para permitir isso, também armazenamos IDs em associações de script de nuvem de malha que são usadas para mapear para os objetos Unity correspondentes na cena.

Observação: para que o procedimento acima funcione, o arquivo scene.map e a cena do Unity devem corresponder. Se, por algum motivo, eles não o fizerem, por exemplo, como resultado de um erro de exportação, isso será detectado e o Mesh Cloud Scripting Service e o cliente Mesh não se conectarão.

Ambientes de publicação com script de nuvem de malha

Quando você publica um Ambiente com Script de Nuvem de Malha, ele publica o Serviço de Script de Nuvem de Ambiente e Malha no Azure. Isso é mostrado no diagrama abaixo:

Fazer upload do modelo de ambiente e do Cloud Scripting para a nuvem

Ao fazer uma alteração em sua cena, você deve pressionar Reproduzir no Unity para visualizar a cena com o Serviço de Script de Nuvem de Malha recém-criado e executado localmente. Em seguida, publique o ambiente modificado usando o Mesh Uploader. A publicação é descrita com mais detalhes nos artigos Criar e publicar seu ambiente e Fornecer Cloud Scripting para criar e publicar .

Autenticação no serviço de script de nuvem em malha

Um serviço de script de nuvem 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 de sua parte. É 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 de malha: como a ferramenta por meio da qual o Cloud Scripting Services é implantado na nuvem, você pode escolher o Service Mode que o Cloud Scripting Service usa na validação do token de autenticação. Isso pode ser feito na configuração do 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 de 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.

Serviço de Script de Nuvem de Malha: valida o token que recebe de solicitações de conexão no Serviço de Malha da Microsoft e, em seguida, escolhe um identificador de usuário persistente do token.

As partes trabalham em conjunto, conforme ilustrado abaixo:

Fluxo de autenticação

Próximas etapas