Indicador de progreso: MRTK2
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.
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;
}
}