Indikator kemajuan — MRTK2
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: 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;
}
}