Conceptos básicos de scripting en la nube
Lea una introducción a Mesh Cloud Scripting y Mesh Visual Scripting.
Diferencias entre scripts en la nube de malla 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.
Información general sobre 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. El scripting en la nube 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.
El gráfico de escena mesh Cloud Scripting 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 en 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 gráfico de 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 grafo de escenas de Unity son diferentes, se asignan estrechamente entre sí y tienen la misma estructura o similar.
Mesh Cloud Scripting, Game Objects 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:
Objetos que agregue a su entorno en Unity.
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 .
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 escena mesh Cloud Scripting 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 acceder a las API que proporciona la aplicación Mesh; por ejemplo, puede obtener una lista de usuarios de la escena o reaccionar a un objeto seleccionado.
Componentes y mesh Cloud Scripting Scene Graph
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 Objeto GameObject tiene un objeto 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.
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 escena 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 se encuentran en el gráfico de escena 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 clonar 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
Encontrará instrucciones detalladas sobre Mesh Cloud Scripting en los artículos Creación de un proyecto de scripting en la nube simple 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
- Activos
- Escenas
- MyScene.unity
- . MeshCloudScripting
- MyScene
- MyScene.csproj
- Program.cs
- scene.map
- App.cs
- MyScene
- Escenas
- Activos
Cada escena del proyecto de Unity que contiene el componente MeshCloudScripting tiene una carpeta correspondiente del mismo nombre contenida en un ". 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 funcionamiento completo, aunque vacío, Cloud Scripting Service. Algunos de los archivos iniciales se muestran anteriormente. Program.cs
contiene código reutilizable que se encarga de:
configurar un IHostBuilder para iniciar el
App
servicio.compilar una instancia de IHost .
ejecutar la
IHost
instancia para finalizar.
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 está IHost
listo para iniciar el App
servicio. Además, StopAsync
se desencadena cuando IHost
se realiza un apagado correcto.
Representación de la 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 de la escena de scripting en la nube de malla; Los tipos de Unity se convierten en tipos de scripting en la nube mesh. 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 inicial de la escena. 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, almacenamos además los identificadores en los enlaces de Scripting en la nube de Mesh que se usan para asignar a los objetos de Unity correspondientes en 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.
Publicación de entornos con scripting en la nube mesh
Al publicar un entorno con Mesh Cloud Scripting, publicará Environment y Mesh Cloud Scripting Service en Azure. Esto se muestra en el diagrama siguiente:
Al realizar un cambio en la escena, debe presionar Reproducir en Unity para obtener una vista previa de la escena con el servicio Mesh Cloud Scripting service recién creado y en ejecución local. A continuación, publique el entorno modificado mediante mesh Uploader. La publicación se describe con más detalle en los artículos Compilación y publicación del entorno y 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 totalmente 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 del 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: