Indicador de progreso: MRTK2

Indicadores de progreso

Escena de ejemplo

En la ProgressIndicatorExamples escena se pueden encontrar ejemplos de cómo usar indicadores de progreso. En esta escena se muestra cada uno de los objetos prefabricados del indicador de progreso incluidos en el SDK. También muestra cómo usar indicadores de progreso junto con algunas tareas asincrónicas comunes, como la carga de escenas.

Ejemplos de indicador de progreso 1

Ejemplo: Abrir, actualizar & cerrar un indicador de progreso

Los indicadores de progreso implementan la IProgressIndicator interfaz . Esta interfaz se puede recuperar de un objeto GameObject mediante GetComponent.

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

private void Start()
{
    indicator = indicatorObject.GetComponent<IProgressIndicator>();
}

Los IProgressIndicator.OpenAsync() métodos y IProgressIndicator.CloseAsync() devuelven Tasks. Se recomienda esperar estas tareas en un método asincrónico.

Los objetos prefabricados predeterminados del indicador de progreso de MRTK deben estar inactivos cuando se colocan en una escena. Cuando se llama a sus IProgressIndicator.OpenAsync() métodos, los indicadores de progreso activarán y desactivarán sus objetos de juego automáticamente. (Este patrón no es un requisito de la interfaz IProgressIndicator).

Establezca la propiedad del Progress indicador en un valor comprendido entre 0 y 1 para actualizar su progreso mostrado. Establezca su Message propiedad para actualizar su mensaje mostrado. Diferentes implementaciones pueden mostrar este contenido de maneras diferentes.

private async void OpenProgressIndicator()
{
    await indicator.OpenAsync();

    float progress = 0;
    while (progress < 1)
    {
        progress += Time.deltaTime;
        indicator.Message = "Loading...";
        indicator.Progress = progress;
        await Task.Yield();
    }

    await indicator.CloseAsync();
}

Estados del indicador

La propiedad de State un indicador determina qué operaciones son válidas. Llamar a un método no válido normalmente hará que el indicador notifique un error y no realice ninguna acción.

State Operaciones válidas
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() se puede usar para asegurarse de que un indicador está completamente abierto o cerrado antes de usarlo.

private async void ToggleIndicator(IProgressIndicator indicator)
{
    await indicator.AwaitTransitionAsync();

    switch (indicator.State)
    {
        case ProgressIndicatorState.Closed:
            await indicator.OpenAsync();
            break;

        case ProgressIndicatorState.Open:
            await indicator.CloseAsync();
            break;
        }
    }