Voortgangsindicator — MRTK2
Voorbeeldscène
Voorbeelden van het gebruik van voortgangsindicatoren vindt u in de ProgressIndicatorExamples
scène. Deze scène toont elk van de voortgangsindicator prefabs die zijn opgenomen in de SDK. Het laat ook zien hoe u voortgangsindicatoren gebruikt in combinatie met enkele algemene asynchrone taken, zoals het laden van scènes.
Voorbeeld: Een voortgangsindicator openen, bijwerken & sluiten
Voortgangsindicatoren implementeren de IProgressIndicator
interface. Deze interface kan worden opgehaald uit een GameObject met behulp van GetComponent
.
[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;
private void Start()
{
indicator = indicatorObject.GetComponent<IProgressIndicator>();
}
De IProgressIndicator.OpenAsync()
methoden en IProgressIndicator.CloseAsync()
retourneren Taken. U wordt aangeraden deze taken in een asynchrone methode te wachten.
De standaard voortgangsindicator prefabs van de MRTK moeten inactief zijn wanneer ze in een scène worden geplaatst. Wanneer hun IProgressIndicator.OpenAsync()
methoden worden genoemd, worden de voortgangsindicatoren automatisch geactiveerd en gedeactiveerd hun gameobjecten. (Dit patroon is geen vereiste voor de interface IProgressIndicator.)
Stel de eigenschap van Progress
de indicator in op een waarde van 0-1 om de weergegeven voortgang bij te werken. Stel de eigenschap in Message
om het weergegeven bericht bij te werken. Verschillende implementaties kunnen deze inhoud op verschillende manieren weergeven.
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();
}
Indicatorstatussen
De eigenschap van State
een indicator bepaalt welke bewerkingen geldig zijn. Het aanroepen van een ongeldige methode zorgt er doorgaans voor dat de indicator een fout rapporteert en geen actie onderneemt.
Staat | Geldige bewerkingen |
---|---|
ProgressIndicatorState.Opening |
AwaitTransitionAsync() |
ProgressIndicatorState.Open |
CloseAsync() |
ProgressIndicatorState.Closing |
AwaitTransitionAsync() |
ProgressIndicatorState.Closed |
OpenAsync() |
AwaitTransitionAsync()
kan worden gebruikt om ervoor te zorgen dat een indicator volledig is geopend of gesloten voordat u deze gebruikt.
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;
}
}