Conceptos básicos de scripting en la nube

Lea una introducción a Mesh Cloud Scripting y Mesh Visual Scripting.

Diferencias entre los scripts en la nube de Mesh y MonoBehaviours

Hay varias diferencias principales entre Mesh Cloud Scripting y MonoBehaviours:

  • Cloud Scripting Services se escribe en mesh Cloud Scripting API (en lugar de la API de Unity).
  • Cloud Scripting Services se ejecuta en la nube en un proceso independiente (en lugar de en el cliente) y sus efectos se sincronizan automáticamente con todos los clientes conectados.

Introducción a la arquitectura

Para habilitar Mesh Cloud Scripting, se implementa un servicio de aplicación denominado Mesh Cloud Scripting Service en un grupo de recursos de Azure determinado que proporcione. Cloud Scripting se ejecuta en el back-end de Azure y consta de un conjunto de scripts de C# de servidor que se ejecutan en un contenedor con un punto de conexión al que se conectan los clientes. En el diagrama siguiente, puede ver que hay dos clientes que se conectan a Cloud Scripting Service. Cloud Scripting Service tiene su propio gráfico de escena autoritativo (marcado como "A" en el diagrama). Cloud Scripting Service interactúa con este grafo de escena a través de mesh Cloud Scripting scene graph API.

Diagrama de la arquitectura de scripting en la nube.

El gráfico de escenas de Scripting en la nube de Mesh se sincroniza automáticamente desde la nube a todos los clientes conectados. Cada cliente tiene una copia idéntica del gráfico de escena mesh Cloud Scripting (marcado como "B" en el diagrama), que se mantiene sincronizado con la versión de nube autoritativa. Cuando Mesh Cloud Scripting Service realiza cambios en el gráfico de escenas de la nube, estos cambios se propagan a las copias de todos los clientes.

En cada cliente, el entorno de ejecución de Unity Mesh reacciona a los cambios en la instancia del cliente del grafo de la escena mesh Cloud Scripting y actualiza la escena de Unity para reflejar su estado. Aunque mesh Cloud Scripting scene graph API y la API de grafos de escena de Unity son diferentes, se asignan estrechamente entre sí y tienen la misma estructura o similar.

Mesh Cloud Scripting, Objetos de juego y Mesh Cloud Scripting Scene Graph

Los objetos que finalmente aparecen en un evento de la aplicación Mesh se pueden dividir en dos categorías:

  1. Objetos que agregue al entorno en Unity.

  2. Objetos con los que personaliza el evento . Puesto que no formaban parte del entorno, Mesh Cloud Scripting no es consciente de ellos.

Creación de una escena

Para habilitar Mesh Cloud Scripting, la escena debe tener un componente Mesh Cloud Scripting .

Captura de pantalla del componente Mesh Cloud Scripting que está asociado a GameObject.

El componente es responsable de administrar los scripts que cree y enlazarlos a la escena de Unity tanto en tiempo de edición como en tiempo de ejecución en la aplicación Mesh. Mesh Cloud Scripting es una tecnología independiente, pero tiene una estrecha integración con Unity. Puede encontrar instrucciones para agregar Mesh Cloud Scripting GameObject en el artículo denominado Crear un proyecto de Scripting en la nube simple y obtener información más detallada sobre el scripting en la sección Guía del programador .

El gráfico de escenas de Scripting en la nube de Mesh se limita a GameObjects que se agregan a la escena en gameObject que contiene el componente Mesh Cloud Scripting. Aunque Mesh Cloud Scripting no puede ver directamente la jerarquía de escenas del resto de la escena, puede tener acceso a las API que proporciona la aplicación Mesh; por ejemplo, puede obtener una lista de usuarios de la escena o reaccionar ante un objeto seleccionado.

Componentes y el gráfico de escenas de scripting en la nube de malla

En el diagrama siguiente, tenga en cuenta que las jerarquías de la escena de Unity y mesh Cloud Scripting Scene son idénticas. Los nodos azules de la sección Escena de Unity representan GameObjects; cada GameObject tiene un TransformNode correspondiente en mesh Cloud Scripting Scene Graph. Cuando se actualiza un TransformNode, hace que la transformación del objeto de juego que corresponda en la escena de Unity se actualice al mismo valor.

Jerarquías de escena de Unity y Mesh

Mesh Cloud Scripting API tiene tipos que se asignan solo a un subconjunto del conjunto completo de componentes de Unity. Todavía es válido crear una escena de Unity con componentes a los que mesh Cloud Scripting API no se puede asignar; simplemente serán invisibles para Mesh Cloud Scripting. En el diagrama, un componente de color blanco tiene un nodo correspondiente en el gráfico de escenas mesh Cloud Scripting; Un componente de color verde no lo hace. El gráfico de escena mesh Cloud Scripting no tiene un nodo del sistema de partículas, por lo que en nuestro ejemplo, el componente del sistema de partículas de la escena de Unity no se mostrará en la escena de Scripting en la nube de Malla correspondiente. Sin embargo, sus componentes circundantes y el objeto de juego propietario están en el gráfico de escenas mesh Cloud Scripting. Esto significa que Mesh Cloud Scripting podrá mover el sistema de partículas alrededor de la escena moviendo sus propios objetos de juego aunque el propio sistema de partículas sea invisible para Cloud Scripting.

Mesh Cloud Scripting API permite la clonación de nodos. Si la aplicación realiza un clon de "A" (que corresponde al nodo "A", GameObjectParent, en la escena de Unity), esto clonará todo el subárbol de GameParentObject, incluido el sistema de partículas Mesh Cloud Scripting no puede ver.

Creación de scripting en la nube de Mesh

Puede encontrar instrucciones detalladas sobre Mesh Cloud Scripting en los artículos Creación de un proyecto sencillo de Scripting en la nube y guía del programador . Aquí se proporciona una breve introducción.

Un proyecto típico de Unity que contiene una escena con Mesh Cloud Scripting tendría el siguiente aspecto en el disco (las carpetas se muestran en negrita):

  • Proyecto de Unity
    • Recursos
      • Escenas
        • MyScene.unity
      • . MeshCloudScripting
        • MyScene
          • MyScene.csproj
          • Program.cs
          • scene.map
          • App.cs

Cada escena del proyecto de Unity que contiene el componente MeshCloudScripting tiene una carpeta correspondiente con el mismo nombre incluido en ". Carpeta MeshCloudScripting" en el directorio Assets. El componente Mesh Cloud Scripting crea esta carpeta y su conjunto inicial de archivos que se compilarán en un servicio de scripting en la nube totalmente en funcionamiento, aunque está vacío. Algunos de los archivos iniciales se muestran anteriormente. Program.cs contiene código reutilizable que se encarga de:

  • configurar un IHostBuilder para iniciar el Appservicio.

  • compilar una instancia de IHost .

  • ejecutando la instancia hasta su IHost finalización.

App.cs es la clase que hospeda la lógica de la aplicación. Implementa la interfaz IHostedService , por lo que tiene dos puntos de entrada: StartAsync y StopAsync. StartAsync se desencadena una vez, cuando IHost está listo para iniciar el App servicio. Además, StopAsync se desencadena cuando IHost se realiza un apagado correcto.

Representación de escena

Anote el archivo scene.map en la lista anterior. Se trata de un detalle interno, pero resulta útil comprenderlo. Cuando se desencadena manualmente en la interfaz de usuario o cuando la escena de Unity se reproduce en el Editor, el componente Mesh Cloud Scripting escribe un archivo scene.map en la carpeta Mesh Cloud Scripting correspondiente. Se trata de una representación de la escena como una jerarquía mesh cloud Scripting Scene; Los tipos de Unity se convierten en tipos mesh Cloud Scripting. Cuando Mesh Cloud Scripting Service se implementa en la nube, no necesita que se ejecute la escena original de Unity. En su lugar, carga el archivo scene.map que define la jerarquía de la escena inicial. Cuando un cliente mesh se conecta a Mesh Cloud Scripting Service, recibe la jerarquía mesh Cloud Scripting y actualiza su escena de Unity para que coincida. Para permitir esto, también almacenamos identificadores en enlaces mesh Cloud Scripting que se usan para asignar a los objetos de Unity correspondientes de la escena.

Nota: Para que funcione lo anterior, el archivo scene.map y la escena de Unity deben coincidir. Si por algún motivo no lo hacen, por ejemplo, como resultado de un error de exportación, esto se detectará y el cliente Mesh Cloud Scripting Service y Mesh no se conectarán.

Entornos de publicación con Scripting en la nube de Mesh

Al publicar un entorno con Mesh Cloud Scripting, publicará el entorno y mesh Cloud Scripting Service en Azure. Esto se muestra en el diagrama siguiente:

Carga de la plantilla de entorno y scripting en la nube

Al realizar un cambio en la escena, debe presionar Reproducir en Unity para obtener una vista previa de la escena con la instancia recién compilada y en ejecución local de Mesh Cloud Scripting Service. A continuación, publique el entorno modificado mediante el cargador de malla. La publicación se describe con más detalle en los artículos Build and publish your environment (Compilación y publicación del entorno ) y Provide Cloud Scripting details for build and publish (Proporcionar scripting en la nube para la compilación y publicación ).

Autenticación en Mesh Cloud Scripting Service

Un servicio de scripting en la nube puede mantener una lista de quiénes son sus usuarios. Una vez autenticado un usuario, Cloud Scripting Service tiene un identificador persistente para el usuario en varias sesiones.

Dicho esto, el flujo de autenticación en Mesh Cloud Scripting Service no requiere ningún esfuerzo adicional desde el final. Es completamente implícito y las partes implicadas trabajan para obtener el token y validarlo automáticamente.

Estas son las partes implicadas en el flujo de autenticación:

Kit de herramientas de Mesh: como herramienta a través de la cual Cloud Scripting Services se implementa en la nube, puede elegir el Service Mode servicio de scripting en la nube que usa para validar el token de autenticación. Esto se puede hacer en la configuración del entorno en la interfaz de usuario del cargador de malla.

Servicio Microsoft Mesh: responsable de emitir un token. Sin un token, los usuarios no pueden interactuar con un scripting en la nube.

Microsoft Mesh: punto de entrada para cómo interactúan los usuarios con Mesh Cloud Scripting. El cliente de Microsoft Mesh es responsable de solicitar un token de acceso desde el servicio Microsoft Mesh en nombre del usuario.

Mesh Cloud Scripting Service: valida el token que recibe de las solicitudes de conexión en el servicio Microsoft Mesh y, a continuación, selecciona un identificador de usuario persistente del token.

Las partes trabajan juntas como se muestra a continuación:

Flujo de autenticación

Pasos siguientes