Indicateur de progression — MRTK2

Indicateurs de progression

Exemple de scène

Vous trouverez des exemples d’utilisation des indicateurs de progression dans la ProgressIndicatorExamples scène. Cette scène illustre chacun des préfabriqués d’indicateur de progression inclus dans le KIT de développement logiciel (SDK). Il montre également comment utiliser des indicateurs de progression conjointement avec certaines tâches asynchrones courantes telles que le chargement de scène.

Exemples d’indicateurs de progression 1

Exemple : Ouvrir, mettre à jour & fermer un indicateur de progression

Les indicateurs de progression implémentent l’interface IProgressIndicator . Cette interface peut être récupérée à partir d’un GameObject à l’aide GetComponentde .

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

Les IProgressIndicator.OpenAsync() méthodes et IProgressIndicator.CloseAsync() retournent Tasks. Nous vous recommandons d’attendre ces tâches dans une méthode asynchrone.

Les préfabriqués de l’indicateur de progression par défaut du MRTK doivent être inactifs lorsqu’ils sont placés dans une scène. Lorsque leurs IProgressIndicator.OpenAsync() méthodes sont appelées, les indicateurs de progression activent et désactivent automatiquement leurs gameobjects. (Ce modèle n’est pas une exigence de l’interface IProgressIndicator.)

Définissez la propriété de l’indicateur Progress sur une valeur comprise entre 0 et 1 pour mettre à jour sa progression affichée. Définissez sa Message propriété pour mettre à jour son message affiché. Différentes implémentations peuvent afficher ce contenu de différentes manières.

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

États de l’indicateur

La propriété d’un State indicateur détermine quelles opérations sont valides. L’appel d’une méthode non valide entraîne généralement que l’indicateur signale une erreur et n’effectue aucune action.

State Opérations valides
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() peut être utilisé pour vérifier qu’un indicateur est entièrement ouvert ou fermé avant de l’utiliser.

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