Table of Contents

Control del flujo de session

Durante la ejecución de session, a veces necesita modificar los componentes de session. En ese caso, debe detener y volver a iniciar session. A veces también puede necesitar detener algunas salidas de session. Este artículo describe cómo controlar el flujo de ejecución de session.

Antes de empezar

Ensamblaje de session

Normalmente, el proceso de ensamblaje se activa automáticamente al iniciar session.

El siguiente código ejecuta implícitamente el proceso de ensamblaje.

Session.StartSession();

En algunos casos, por ejemplo cuando necesita comprobar la disponibilidad y el soporte del dispositivo por adelantado, también puede usar Assemble() para activar manualmente el proceso de ensamblaje de session:

StartCoroutine(Session.Assemble());
Nota

Assemble() devuelve una corrutina y debe iniciarse mediante StartCoroutine(IEnumerator).

Iniciar session

AutoStart controla si session se inicia automáticamente. Si AutoStart es true (valor predeterminado), session se inicia automáticamente en MonoBehaviour.Start().

Session también puede iniciarse manualmente. Esto requiere cambiar AutoStart a false por adelantado. Luego puede usar StartSession() para iniciar session.

Session.StartSession();

Detener session

Puede usar StopSession(bool) para detener session.

Session.StopSession(keepLastFrame);

El parámetro keepLastFrame controla si se conserva la última imagen de la cámara física después de que session se detenga. Esto es útil cuando se necesita cambiar entre diferentes sessions y puede evitar el parpadeo de la pantalla.

Nota

keepLastFrame solo puede controlar sessions cuyo renderizado de imagen lo realiza EasyAR. En general, este parámetro no es válido al usar AR Foundation o visores.

Detener la salida de session

Cuando session está en ejecución, puede controlar la salida de session mediante enabled.

El siguiente código puede detener toda la salida de session. En este momento, session sigue en ejecución, pero no se actualizará ningún contenido, incluida la imagen de la cámara física renderizada por EasyAR y los transforms de todos los nodos controlados por EasyAR.

Session.enabled = false;

Detener el renderizado de la imagen de la cámara física por session

Puede usar ARAssembly.CameraImageRenderer para controlar el renderizado de la imagen de la cámara física.

El siguiente código puede detener 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;
}

Tenga en cuenta que primero debe comprobar si existe ARAssembly.CameraImageRenderer.

Nota

ARAssembly.CameraImageRenderer solo es válido en sessions cuyo renderizado de imagen lo realiza EasyAR. En general, no es válido al usar AR Foundation o visores. En este caso, el renderizado de la imagen de la cámara física lo completa AR Foundation o el SDK del visor.

Próximos pasos