İlerleme göstergesi — MRTK2

İlerleme Göstergeleri

Örnek sahne

İlerleme göstergelerinin nasıl kullanılacağına ilişkin örnekler sahnede bulunabilir ProgressIndicatorExamples . Bu sahne, SDK'ya dahil edilen ilerleme göstergesi ön eklerinin her birini gösterir. Ayrıca, sahne yükleme gibi bazı yaygın zaman uyumsuz görevlerle birlikte ilerleme göstergelerinin nasıl kullanılacağını da gösterir.

İlerleme Göstergesi Örnekleri 1

Örnek: İlerleme göstergesini açma, güncelleştirme & kapatma

İlerleme göstergeleri arabirimini IProgressIndicator uygular. Bu arabirim kullanılarak GetComponentbir GameObject'ten alınabilir.

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

IProgressIndicator.OpenAsync() ve IProgressIndicator.CloseAsync() yöntemleri Görevleri döndürür. Bu Görevleri zaman uyumsuz bir yöntemde beklemenizi öneririz.

MRTK'nın varsayılan ilerleme göstergesi ön ekleri bir sahneye yerleştirildiğinde devre dışı olmalıdır. IProgressIndicator.OpenAsync() Yöntemleri çağrıldığında ilerleme göstergeleri gameobject'lerini otomatik olarak etkinleştirir ve devre dışı bırakır. (Bu desen IProgressIndicator arabiriminin bir gereksinimi değildir.)

Görüntülenen ilerleme durumunu güncelleştirmek için göstergenin Progress özelliğini 0-1 arası bir değere ayarlayın. Message Görüntülenen iletisini güncelleştirmek için özelliğini ayarlayın. Farklı uygulamalar bu içeriği farklı şekillerde görüntüleyebilir.

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

Gösterge durumları

Hangi işlemlerin geçerli olduğunu bir göstergenin State özelliği belirler. Geçersiz bir yöntemi çağırmak genellikle göstergenin hata bildirmesine ve hiçbir işlem gerçekleştirmesine neden olur.

Durum Geçerli İşlemler
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() bir göstergeyi kullanmadan önce tamamen açıldığından veya kapatıldığına emin olmak için kullanılabilir.

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