Förloppsindikator

Förloppsindikatorer

Exempelscen

Exempel på hur du använder förloppsindikatorer finns i ProgressIndicatorExamples scenen. Den här scenen visar var och en av förloppsindikatorns prefabs som ingår i SDK: n. Den visar också hur du använder förloppsindikatorer tillsammans med några vanliga asynkrona uppgifter som scenläsning.

Progress Indicator Examples 1

Exempel: Öppna, uppdatera & stänga en förloppsindikator

Förloppsindikatorer implementerar IProgressIndicator -gränssnittet. Det här gränssnittet kan hämtas från ett GameObject med hjälp av GetComponent .

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

Metoderna IProgressIndicator.OpenAsync() och IProgressIndicator.CloseAsync() returnerar Uppgifter. Vi rekommenderar att du väntar på dessa uppgifter i en asynkron metod.

MRTK:s standardförloppsindikator prefabs bör vara inaktiva när de placeras i en scen. När deras IProgressIndicator.OpenAsync() metoder kallas för förloppsindikatorer aktiveras och inaktiveras deras gameobjects automatiskt. (Det här mönstret är inte ett krav för gränssnittet IProgressIndicator.)

Ange indikatorns egenskap Progress till ett värde från 0–1 för att uppdatera dess visade förlopp. Ange dess Message egenskap för att uppdatera det meddelande som visas. Olika implementeringar kan visa det här innehållet på olika sätt.

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

Indikator tillstånd

En indikators egenskap State avgör vilka åtgärder som är giltiga. Om du anropar en ogiltig metod kommer indikatorn vanligtvis att rapportera ett fel och inte vidta några åtgärder.

Tillstånd Giltiga åtgärder
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() kan användas för att se till att en indikator är helt öppen eller stängd innan du använder den.

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