Control de flujo de sesión
Durante la ejecución de una sesión, a veces es necesario modificar los componentes de la sesión, lo que requiere detener y reiniciar la sesión. En ocasiones, también puede ser necesario detener ciertas salidas de la sesión. Este documento explica cómo controlar el flujo de ejecución de una sesión.
Antes de comenzar
- Comprende los conceptos básicos, la composición y el flujo de trabajo de una sesión a través de la Introducción a ARSession
- Aprende cómo crear una sesión
Ensamblado de sesión
Normalmente, el proceso de ensamblado se activa automáticamente al iniciar la sesión.
El siguiente código ejecuta implícitamente el proceso de ensamblado:
Session.StartSession();
A veces, por ejemplo, para verificar disponibilidad y compatibilidad del dispositivo de antemano, también puedes usar Assemble() para activar manualmente el proceso de ensamblado de la sesión:
StartCoroutine(Session.Assemble());
Nota
Assemble() devuelve una corrutina, que debe iniciarse mediante StartCoroutine(IEnumerator).
Iniciar sesión
AutoStart controla si la sesión se inicia automáticamente. Si AutoStart es true (valor predeterminado), la sesión se iniciará automáticamente durante MonoBehaviour.Start().
La sesión también se puede iniciar manualmente, lo que requiere establecer AutoStart en false de antemano. Luego puedes usar StartSession() para iniciar la sesión.
Session.StartSession();
Detener sesión
Puedes usar StopSession(bool) para detener la sesión.
Session.StopSession(keepLastFrame);
Puedes usar el parámetro keepLastFrame para controlar si se conserva la última imagen de la cámara física después de detener la sesión. Esto es útil cuando se necesita cambiar entre diferentes sesiones, ya que evita parpadeos en la pantalla.
Nota
keepLastFrame solo controla las sesiones donde EasyAR realiza el renderizado de la imagen. Generalmente, este parámetro no tiene efecto al usar AR Foundation o dispositivos de visualización montados en la cabeza (headsets).
Detener la salida de sesión
Durante la ejecución de la sesión, puedes controlar su salida mediante enabled.
El siguiente código detiene todas las salidas de la sesión. En este estado, la sesión sigue en ejecución, pero no actualizará ningún contenido (incluyendo la imagen de la cámara física renderizada por EasyAR y todos los transform de nodos controlados por EasyAR, etc.).
Session.enabled = false;
Detener el renderizado de la imagen de la cámara física por la sesión
Puedes usar ARAssembly.CameraImageRenderer para controlar el renderizado de la imagen de la cámara física.
El siguiente código detiene el renderizado de la imagen de la cámara física:
if (Session.Assembly != null && Session.Assembly.CameraImageRenderer.OnSome)
{
Session.Assembly.CameraImageRenderer.Value.enabled = false;
}
Es importante verificar primero si existe ARAssembly.CameraImageRenderer.
Nota
ARAssembly.CameraImageRenderer solo es efectivo en sesiones donde EasyAR realiza el renderizado de la imagen. Generalmente, no es efectivo al usar AR Foundation o SDKs de dispositivos de visualización montados en la cabeza, ya que en esos casos el renderizado lo realiza AR Foundation o el SDK del dispositivo.
Pasos siguientes
- Intenta acceder a los componentes de funcionalidad AR para conocer más métodos de control de funciones AR
- Aprende cómo obtener los resultados de ejecución de la sesión
- Aprende cómo verificar disponibilidad y compatibilidad del dispositivo