Folyamatjelző

Folyamatjelzők

Példa jelenet

A folyamatjelzők használatának példái a ProgressIndicatorExamples jelenetben találhatók. Ez a jelenet bemutatja az SDK-ban található összes folyamatjelző előfedőt. Azt is bemutatja, hogyan használhatók a folyamatjelzők néhány gyakori aszinkron feladathoz, például a jelenetbetöltéshez.

Folyamatjelző példák 1

Példa: Folyamatjelző megnyitása, & frissítése és bezárása

Az interfészt IProgressIndicator folyamatjelzők hajtják végre. Ez az interfész a GameObjectből a használatával olvasható GetComponent be.

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

A IProgressIndicator.OpenAsync() és a metódus a Tasks IProgressIndicator.CloseAsync() (Feladatok) IProgressIndicator.OpenAsync() Javasoljuk, hogy a feladatokra aszinkron metódusban várja meg ezeket a feladatokat.

Az MRTK alapértelmezett folyamatjelző előtagja inaktívnak kell lennie, amikor egy jelenetbe helyezi. A metódusok folyamatjelzői automatikusan aktiválják és inaktiválják IProgressIndicator.OpenAsync() gameobjectjeiket. (Ez a minta nem az IProgressIndicator felület követelménye.)

Állítsa a mutató tulajdonságát 0 és 1 között értékre a megjelenített folyamat Progress frissítéséhez. Állítsa be Message a tulajdonságát a megjelenített üzenet frissítéséhez. A különböző implementációk különböző módokon jelenítik meg ezt a tartalmat.

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

Jelző állapotok

A jelző tulajdonsága State határozza meg, hogy mely műveletek érvényesek. Az érvénytelen metódusok hívása általában hibát jelez, és nem hoz műveletet.

Állapot Érvényes műveletek
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() A használatával még a használat előtt győződjön meg arról, hogy a jelző teljesen ki van nyitva vagy be van zárva.

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