Ukazatel průběhu

Indikátory průběhu

Příklad scény

Příklady použití indikátorů průběhu najdete ve ProgressIndicatorExamples scéně. Tato scéna ukazuje všechny předběžné verze indikátoru průběhu, které jsou součástí sady SDK. Ukazuje také, jak používat indikátory průběhu ve spojení s některými běžnými asynchronními úkoly, jako je načítání scény.

Indikátor průběhu – příklady 1

Příklad: Otevření, aktualizace & a zavření indikátoru průběhu

Indikátory průběhu implementují IProgressIndicator rozhraní . Toto rozhraní je možné načíst z objektu GameObject pomocí GetComponent .

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

Metody IProgressIndicator.OpenAsync()IProgressIndicator.CloseAsync() a vracejí IProgressIndicator.OpenAsync(). Doporučujeme počkat na tyto úlohy v asynchronní metodě.

Výchozí prefabs indikátoru průběhu MRTK by při umístění ve scéně měly být neaktivní. Když se IProgressIndicator.OpenAsync() jejich metody nazývají indikátory průběhu, aktivují a deaktivují své gameobjecty automaticky. (Tento model není požadavkem rozhraní IProgressIndicator.)

Pokud chcete aktualizovat zobrazený průběh indikátoru, nastavte vlastnost indikátoru na hodnotu Progress z 0–1. Pokud chcete Message aktualizovat zobrazenou zprávu, nastavte její vlastnost . Různé implementace mohou zobrazit tento obsah různými způsoby.

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

Stavy indikátoru

Vlastnost indikátoru State určuje, které operace jsou platné. Volání neplatné metody obvykle způsobí, že indikátor nahlásit chybu a nebude nic jednat.

Stav Platné operace
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() můžete použít k tomu, abyste před použitím indikátor úplně otevřeli nebo zavřeli.

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