Fortschrittsindikator – MRTK2
Beispielszene
Beispiele für die Verwendung von Fortschrittsindikatoren finden Sie in der ProgressIndicatorExamples
Szene. In dieser Szene werden die einzelnen Prefabs des Statusindikators veranschaulicht, die im SDK enthalten sind. Außerdem wird veranschaulicht, wie Fortschrittsindikatoren in Verbindung mit einigen gängigen asynchronen Aufgaben wie dem Laden von Szenen verwendet werden.
Beispiel: Öffnen, Aktualisieren & Schließen eines Statusindikators
Fortschrittsindikatoren implementieren die IProgressIndicator
Schnittstelle. Diese Schnittstelle kann mithilfe GetComponent
von aus einem GameObject abgerufen werden.
[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;
private void Start()
{
indicator = indicatorObject.GetComponent<IProgressIndicator>();
}
Die IProgressIndicator.OpenAsync()
Methoden und IProgressIndicator.CloseAsync()
geben Tasks zurück. Es wird empfohlen, diese Aufgaben in einer asynchronen Methode abzuwarten.
Die Standardmäßigen Statusanzeige-Prefabs des MRTK sollten inaktiv sein, wenn sie in einer Szene platziert werden. Wenn ihre IProgressIndicator.OpenAsync()
Methoden aufgerufen werden, aktivieren und deaktivieren die Fortschrittsindikatoren ihre Spielobjekte automatisch. (Dieses Muster ist keine Anforderung der IProgressIndicator-Schnittstelle.)
Legen Sie die Eigenschaft des Indikators Progress
auf einen Wert zwischen 0 und 1 fest, um den angezeigten Fortschritt zu aktualisieren. Legen Sie die Message
-Eigenschaft fest, um die angezeigte Meldung zu aktualisieren. Verschiedene Implementierungen können diesen Inhalt auf unterschiedliche Weise anzeigen.
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();
}
Indikatorzustände
Die Eigenschaft eines State
Indikators bestimmt, welche Vorgänge gültig sind. Das Aufrufen einer ungültigen Methode führt in der Regel dazu, dass der Indikator einen Fehler meldet und keine Aktion ergreift.
State | Gültige Vorgänge |
---|---|
ProgressIndicatorState.Opening |
AwaitTransitionAsync() |
ProgressIndicatorState.Open |
CloseAsync() |
ProgressIndicatorState.Closing |
AwaitTransitionAsync() |
ProgressIndicatorState.Closed |
OpenAsync() |
AwaitTransitionAsync()
kann verwendet werden, um sicherzustellen, dass ein Indikator vollständig geöffnet oder geschlossen ist, bevor er verwendet wird.
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;
}
}