Share via


Voortgangsindicator — MRTK2

Voortgangsindicatoren

Voorbeeldscène

Voorbeelden van het gebruik van voortgangsindicatoren vindt u in de ProgressIndicatorExamples scène. Deze scène toont elk van de voortgangsindicator prefabs die zijn opgenomen in de SDK. Het laat ook zien hoe u voortgangsindicatoren gebruikt in combinatie met enkele algemene asynchrone taken, zoals het laden van scènes.

Voorbeelden van voortgangsindicator 1

Voorbeeld: Een voortgangsindicator openen, bijwerken & sluiten

Voortgangsindicatoren implementeren de IProgressIndicator interface. Deze interface kan worden opgehaald uit een GameObject met behulp van GetComponent.

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

De IProgressIndicator.OpenAsync() methoden en IProgressIndicator.CloseAsync() retourneren Taken. U wordt aangeraden deze taken in een asynchrone methode te wachten.

De standaard voortgangsindicator prefabs van de MRTK moeten inactief zijn wanneer ze in een scène worden geplaatst. Wanneer hun IProgressIndicator.OpenAsync() methoden worden genoemd, worden de voortgangsindicatoren automatisch geactiveerd en gedeactiveerd hun gameobjecten. (Dit patroon is geen vereiste voor de interface IProgressIndicator.)

Stel de eigenschap van Progress de indicator in op een waarde van 0-1 om de weergegeven voortgang bij te werken. Stel de eigenschap in Message om het weergegeven bericht bij te werken. Verschillende implementaties kunnen deze inhoud op verschillende manieren weergeven.

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

Indicatorstatussen

De eigenschap van State een indicator bepaalt welke bewerkingen geldig zijn. Het aanroepen van een ongeldige methode zorgt er doorgaans voor dat de indicator een fout rapporteert en geen actie onderneemt.

Staat Geldige bewerkingen
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() kan worden gebruikt om ervoor te zorgen dat een indicator volledig is geopend of gesloten voordat u deze gebruikt.

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