Indicador de progresso — MRTK2
Cena de exemplo
Exemplos de como usar indicadores de progresso podem ser encontrados na ProgressIndicatorExamples
cena. Essa cena demonstra cada um dos pré-fabricados do indicador de progresso incluídos no SDK. Ele também demonstra como usar indicadores de progresso em conjunto com algumas tarefas assíncronas comuns, como o carregamento de cena.
Exemplo: Abrir, atualizar & fechar um indicador de progresso
Indicadores de progresso implementam a IProgressIndicator
interface . Essa interface pode ser recuperada de um GameObject usando GetComponent
.
[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;
private void Start()
{
indicator = indicatorObject.GetComponent<IProgressIndicator>();
}
Os IProgressIndicator.OpenAsync()
métodos e IProgressIndicator.CloseAsync()
retornam Tarefas. É recomendável aguardar essas Tarefas em um método assíncrono.
Os pré-fabricados do indicador de progresso padrão do MRTK devem estar inativos quando colocados em uma cena. Quando seus IProgressIndicator.OpenAsync()
métodos forem chamados, os indicadores de progresso ativarão e desativarão seus gameobjects automaticamente. (Esse padrão não é um requisito da interface IProgressIndicator.)
Defina a propriedade do Progress
indicador como um valor de 0 a 1 para atualizar seu progresso exibido. Defina sua Message
propriedade para atualizar sua mensagem exibida. Diferentes implementações podem exibir esse conteúdo de maneiras 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 do indicador
A propriedade de State
um indicador determina quais operações são válidas. Chamar um método inválido normalmente fará com que o indicador relate um erro e não tome nenhuma ação.
Estado | Operações válidas |
---|---|
ProgressIndicatorState.Opening |
AwaitTransitionAsync() |
ProgressIndicatorState.Open |
CloseAsync() |
ProgressIndicatorState.Closing |
AwaitTransitionAsync() |
ProgressIndicatorState.Closed |
OpenAsync() |
AwaitTransitionAsync()
pode ser usado para garantir que um indicador esteja totalmente aberto ou fechado antes de usá-lo.
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;
}
}