Share via


Conceitos básicos de scripting na cloud

Leia uma descrição geral do Mesh Cloud Scripting and 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 Scripting na Cloud são escritos na API de Scripting na Cloud de Mesh (por oposição à API do Unity).
  • Os Serviços de Scripting na Cloud são executados na cloud num processo separado (por oposição ao do cliente) e os respetivos efeitos são automaticamente sincronizados com todos os clientes ligados.

Descrição geral da arquitetura

Para ativar o Mesh Cloud Scripting, é implementado um serviço de aplicação denominado Mesh Cloud Scripting Service num grupo de recursos do Azure específico que fornecer. O Scripting na Cloud é executado no back-end do Azure e consiste num conjunto de scripts C# do servidor em execução num contentor com um ponto final ao qual os clientes se ligam. No diagrama abaixo, pode ver que existem dois clientes que se ligam ao Serviço de Scripting na Cloud. O Cloud Scripting Service tem o seu próprio gráfico de cenário autoritativo (marcado como "A" no diagrama). O Cloud Scripting Service interage com este gráfico de cenas através da graph API de cenas de Scripting na Cloud do Mesh.

Um diagrama da Arquitetura de Scripting na Cloud.

O grafo de cena Scripting na Cloud do Mesh é sincronizado automaticamente da cloud para todos os clientes ligados. Cada cliente tem uma cópia idêntica do gráfico de cenas de Scripting na Cloud do Mesh (marcado como "B" no diagrama), que é mantido sincronizado com a versão de cloud autoritativa. Quando o Mesh Cloud Scripting Service faz alterações ao gráfico de cenas na cloud, estas alterações são propagadas para as cópias em todos os clientes.

Em cada cliente, o runtime do Unity Mesh reage a alterações na instância do cliente do grafo de cena do Mesh Cloud Scripting e atualiza a cena do Unity para refletir o seu estado. Embora a grafo de cena de Scripting na Cloud do Mesh API e a graph API de cenas do Unity sejam diferentes, mapeiam-se de perto umas às outras e têm a mesma estrutura ou uma estrutura semelhante.

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

Os objetos que eventualmente aparecem num Evento na aplicação Mesh podem ser divididos em duas categorias:

  1. Objetos que adiciona ao seu Ambiente no Unity.

  2. Objetos com os qual personaliza o Seu Evento . Uma vez que estes não fazem parte do Ambiente, o Mesh Cloud Scripting desconhece-os.

Criar uma cena

Para ativar o Mesh Cloud Scripting, a sua cena tem de ter um componente Mesh Cloud Scripting .

Uma captura de ecrã do componente Mesh Cloud Scripting anexado ao GameObject.

O componente é responsável por gerir os scripts que cria e enlace-os à cena do Unity, tanto no tempo de edição como no runtime na aplicação Mesh. O Mesh Cloud Scripting é uma tecnologia autónoma, mas tem uma integração sólida com o Unity. Pode encontrar instruções para adicionar o GameObject do Mesh Cloud Scripting no artigo denominado Criar um projeto de Scripting na Cloud simples e informações mais detalhadas sobre scripts na secção Guia do Programador .

O grafo de cena Scripting na Cloud do Mesh está limitado aos GameObjects que adiciona à cena no GameObject que contém o componente Mesh Cloud Scripting. Embora o Mesh Cloud Scripting não consiga ver diretamente a hierarquia de cenas do resto da cena, pode aceder às APIs que a aplicação Mesh fornece, por exemplo, pode obter uma lista de Utilizadores na cena ou reagir a um objeto que está a ser selecionado.

Components and the Mesh Cloud Scripting Scene Graph

No diagrama abaixo, tenha em atenção que as hierarquias da Cena do Unity e da Cena de Scripting da Cloud de Malha são idênticas. Os nós azuis na secção Cena do Unity representam GameObjects; cada GameObject tem um TransformNode correspondente no Mesh Cloud Scripting Scene Graph. Quando um TransformNode é atualizado, faz com que a transformação do objeto de jogo ao qual corresponde na Cena do Unity seja atualizada para o mesmo valor.

Hierarquias de Cenários do Unity e do Mesh

A API de Scripting na Cloud de Malha tem tipos que mapeiam para apenas um subconjunto do conjunto completo de Componentes do Unity. Ainda é válido para criar uma Cena do Unity com componentes para os quais a API de Scripting na Cloud de Mesh não consegue mapear; serão simplesmente invisíveis para o Mesh Cloud Scripting. No diagrama, um componente de cor branca tem um nó correspondente no gráfico de cenas Scripting da Cloud de Malha; um componente de cor verde não. O grafo de cena Scripting de Nuvem de Malha não tem um nó de sistema de partículas, pelo que, no nosso exemplo, o componente do sistema de partículas na cena do Unity não aparecerá na cena de Scripting de Cloud de Malha correspondente. No entanto, os componentes adjacentes e o objeto de jogo proprietário estão no gráfico de cenas Scripting na Cloud do Mesh. Isto significa que o Mesh Cloud Scripting será capaz de mover o sistema de partículas em torno da cena, movendo os seus próprios objetos de jogo, mesmo que o próprio sistema de partículas seja invisível para o Scripting na Cloud.

A API de Scripting na Cloud do Mesh permite a clonagem de nós. Se a aplicação fizer um clone de "A" (que corresponde ao nó "A", GameObjectParent, na cena do Unity), esta ação clonará toda a subárvore de GameParentObject, incluindo o sistema de partículas Mesh Cloud Scripting não pode ver.

Criação de Scripts na Cloud do Mesh

Pode encontrar instruções detalhadas sobre o Mesh Cloud Scripting nos artigos Criar um projeto de Scripting na Cloud simples e Guia do Programador . Aqui, damos uma breve descrição geral.

Um projeto típico do Unity que contém uma cena com o Mesh Cloud Scripting teria o seguinte aspeto no disco (as pastas são apresentadas como negrito):

  • Projeto do Unity
    • Recursos
      • Cenas
        • MyScene.unity
      • . MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

Cada cena no projeto do Unity que contém o componente MeshCloudScripting tem uma pasta correspondente com o mesmo nome contida num ". MeshCloudScripting" pasta no diretório Assets. O componente Mesh Cloud Scripting cria esta pasta e o respetivo conjunto inicial de ficheiros que serão compilados para um Serviço de Scripts na Cloud totalmente funcional, embora vazio. Alguns dos ficheiros iniciais são apresentados acima. Program.cs contém código automático que trata de:

App.cs é a classe que aloja a lógica da aplicação. Implementa a interface IHostedService , pelo que tem dois pontos de entrada: StartAsync e StopAsync. StartAsync é acionado uma vez, quando o IHost está pronto para iniciar o App serviço. Além disso, StopAsync é acionado quando o está a IHost efetuar um encerramento correto.

Representação da cena

Repare no ficheiro scene.map na lista acima. Trata-se de um detalhe interno, mas é útil de compreender. Quando acionado manualmente na IU ou quando a cena do Unity é reproduzida no Revisor, o componente Mesh Cloud Scripting escreve um ficheiro scene.map na pasta Mesh Cloud Scripting correspondente. Esta é uma representação da cena como uma hierarquia mesh Cloud Scripting Scene; os tipos do Unity são convertidos em tipos de Scripting na Cloud do Mesh. Quando o Mesh Cloud Scripting Service é implementado na cloud, não precisa da cena original do Unity para ser executada. Em vez disso, carrega o ficheiro scene.map que define a hierarquia de cenário inicial. Quando um cliente mesh se liga ao Mesh Cloud Scripting Service, recebe a hierarquia mesh Cloud Scripting e atualiza a respetiva cena do Unity para corresponder. Para permitir isto, armazenamos também IDs em enlaces de Scripting na Cloud do Mesh que são utilizados para mapear para os objetos do Unity correspondentes no Cenário.

Nota: para que o ficheiro acima funcione, o ficheiro scene.map e a cena do Unity têm de corresponder. Se, por algum motivo, não o fizerem, por exemplo, como resultado de um erro de exportação, isto será detetado e o Mesh Cloud Scripting Service e o cliente Mesh não se ligarão.

Ambientes de Publicação com Scripting na Cloud do Mesh

Quando publica um Ambiente com Scripting na Cloud do Mesh, este publicará o Environment and Mesh Cloud Scripting Service no Azure. Isto é apresentado no diagrama abaixo:

Carregar o modelo de ambiente e o Scripting na Cloud para a cloud

Quando efetua uma alteração à sua cena, deve premir Reproduzir no Unity para pré-visualizar o cenário com o Mesh Cloud Scripting Service recém-criado e executado localmente. Em seguida, publique o ambiente modificado com o Carregador de Malha. A publicação é descrita mais detalhadamente em Criar e publicar o seu ambiente e Fornecer detalhes de Scripting na Cloud para compilar e publicar artigos.

Autenticação no Mesh Cloud Scripting Service

Um Serviço de Scripting na Cloud pode manter uma lista de quem são os respetivos utilizadores. Assim que um utilizador é autenticado, o Serviço de Scripting na Cloud tem um identificador persistente para o utilizador em várias sessões.

Dito isto, o fluxo de Autenticação no Mesh Cloud Scripting Service não requer qualquer esforço adicional do seu lado. É totalmente implícito e as partes envolvidas trabalham para obter o token e validá-lo automaticamente.

Eis as partes envolvidas no fluxo de Autenticação:

Toolkit de malha: como a ferramenta através da qual os Serviços de Scripting na Cloud são implementados na cloud, pode escolher o Service Mode seu Serviço de Scripting na Cloud utilizado para validar o token de autenticação. Isto pode ser feito na definição Configuração do Ambiente na IU do Carregador de Malha.

Serviço Do Microsoft Mesh: responsável pela emissão de um token. Sem um token, os utilizadores não podem interagir com um Scripting na Cloud.

Microsoft Mesh: o ponto de entrada para a forma como os utilizadores interagem com o Mesh Cloud Scripting. O cliente do Microsoft Mesh é responsável por pedir um token de acesso ao Serviço Microsoft Mesh em nome do utilizador.

Mesh Cloud Scripting Service: valida o token que recebe dos pedidos de ligação ao Serviço Microsoft Mesh e, em seguida, escolhe um identificador de utilizador persistente do token.

As partes trabalham em conjunto, conforme ilustrado abaixo:

Fluxo de Autenticação

Passos seguintes