Indikator kemajuan — MRTK2

Indikator Kemajuan

Contoh adegan

Contoh cara menggunakan indikator kemajuan dapat ditemukan di ProgressIndicatorExamples adegan. Adegan ini menunjukkan setiap prefab indikator kemajuan yang disertakan dalam SDK. Ini juga menunjukkan cara menggunakan indikator kemajuan bersama dengan beberapa tugas asinkron umum seperti pemuatan adegan.

Contoh Indikator Kemajuan 1

Contoh: Buka, perbarui & tutup indikator kemajuan

Indikator kemajuan mengimplementasikan IProgressIndicator antarmuka. Antarmuka ini dapat diambil dari GameObject menggunakan GetComponent.

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

Metode IProgressIndicator.OpenAsync() dan IProgressIndicator.CloseAsync() mengembalikan Tugas. Sebaiknya tunggu Tugas ini dalam metode asinkron.

Prefab indikator kemajuan default MRTK harus tidak aktif ketika ditempatkan dalam adegan. Ketika metode mereka IProgressIndicator.OpenAsync() disebut indikator kemajuan akan mengaktifkan dan menonaktifkan gameobjects mereka secara otomatis. (Pola ini bukan persyaratan antarmuka IProgressIndicator.)

Atur properti indikator Progress ke nilai dari 0-1 untuk memperbarui kemajuan yang ditampilkan. Atur propertinya Message untuk memperbarui pesan yang ditampilkan. Implementasi yang berbeda dapat menampilkan konten ini dengan cara yang berbeda.

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

Status indikator

Properti indikator State menentukan operasi mana yang valid. Memanggil metode yang tidak valid biasanya akan menyebabkan indikator melaporkan kesalahan dan tidak mengambil tindakan.

Provinsi Operasi yang Valid
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() dapat digunakan untuk memastikan indikator dibuka sepenuhnya atau ditutup sebelum menggunakannya.

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