Statusindikator — MRTK2
Beispielszene
Beispiele für die Verwendung von Statusindikatoren finden Sie in der ProgressIndicatorExamples
Szene. In dieser Szene wird jede der im SDK enthaltenen Statusanzeige-Prefabs veranschaulicht. Außerdem wird veranschaulicht, wie Statusindikatoren in Verbindung mit einigen gängigen asynchronen Aufgaben wie dem Laden von Szenen verwendet werden.

Beispiel: Öffnen, Aktualisieren & eines Statusindikators
Statusindikatoren implementieren die IProgressIndicator
Schnittstelle. Diese Schnittstelle kann über ein GameObject GetComponent
abgerufen werden.
[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;
private void Start()
{
indicator = indicatorObject.GetComponent<IProgressIndicator>();
}
Die IProgressIndicator.OpenAsync()
Und IProgressIndicator.CloseAsync()
Methoden geben "Tasks" zurück. Wir empfehlen, auf diese Aufgaben in einer asynchronen Methode zu warten.
Die Standardstatusanzeige des MRTK sollte bei der Platzierung in einer Szene inaktiv sein. Wenn ihre IProgressIndicator.OpenAsync()
Methoden als Statusindikatoren bezeichnet werden, werden ihre Spielobjekte automatisch aktiviert und deaktiviert. (Dieses Muster ist keine Anforderung der IProgressIndicator-Schnittstelle.)
Legen Sie die Eigenschaft des Indikators Progress
auf einen Wert von 0 bis 1 fest, um den angezeigten Fortschritt zu aktualisieren. Legen Sie die Message
Eigenschaft fest, um die angezeigte Nachricht zu aktualisieren. Unterschiedliche 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 Indikators State
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 ausgeführt wird.
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 es 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;
}
}