Indikátor průběhu – MRTK2

Indikátory průběhu

Příklad scény

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

Příklady indikátorů průběhu 1

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

Indikátory průběhu implementují IProgressIndicator rozhraní. Toto rozhraní lze načíst z GameObject pomocí GetComponent.

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

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

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

Nastavte vlastnost ukazatele Progress na hodnotu od 0 do 1, aby se aktualizoval zobrazený průběh. Nastavte jeho Message vlastnost tak, aby se aktualizovala zobrazená zpráva. Různé implementace mohou tento obsah zobrazit 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átorů

Vlastnost ukazatele State určuje, které operace jsou platné. Volání neplatné metody obvykle způsobí, že indikátor nahlásí chybu a neprovedou žádnou akci.

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

AwaitTransitionAsync() lze použít k tomu, abyste se ujistili, že je indikátor před použitím zcela otevřen nebo zavřený.

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