Indicatori di stato

Indicatori di stato

Scena di esempio

Esempi di come usare gli indicatori di stato sono disponibili nella ProgressIndicatorExamples scena. Questa scena illustra ognuno dei prefab dell'indicatore di stato inclusi nell'SDK. Illustra anche come usare gli indicatori di stato in combinazione con alcune attività asincrone comuni, ad esempio il caricamento della scena.

Progress Indicator Examples 1

Esempio: Aprire, aggiornare & chiudere un indicatore di stato

Gli indicatori di stato implementano IProgressIndicator l'interfaccia . Questa interfaccia può essere recuperata da un GameObject usando GetComponent .

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

I IProgressIndicator.OpenAsync() metodi e IProgressIndicator.CloseAsync() restituiscono Attività. È consigliabile attendere queste attività in un metodo asincrono.

I prefab predefiniti dell'indicatore di stato di MRTK devono essere inattivi quando vengono posizionati in una scena. Quando i IProgressIndicator.OpenAsync() relativi metodi vengono chiamati, gli indicatori di stato attivano e disattivano automaticamente gli oggetti di gioco. Questo modello non è un requisito dell'interfaccia IProgressIndicator.

Impostare la proprietà Progress dell'indicatore su un valore compreso tra 0 e 1 per aggiornarne lo stato visualizzato. Impostare la Message proprietà per aggiornare il messaggio visualizzato. Implementazioni diverse possono visualizzare questo contenuto in modi diversi.

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();
}

Stati dell'indicatore

La proprietà di un State indicatore determina le operazioni valide. Se si chiama un metodo non valido, l'indicatore segnala in genere un errore e non esegue alcuna azione.

Stato Operazioni valide
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() può essere usato per assicurarsi che un indicatore sia completamente aperto o chiuso prima di 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;
        }
    }