Indicateur de progression — MRTK2

Progress Indicators

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 de l’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.

Progress Indicator Examples 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 méthodes et IProgressIndicator.CloseAsync() les IProgressIndicator.OpenAsync() méthodes retournent Tasks. Nous vous recommandons d’attendre ces tâches dans une méthode asynchrone.

Les préfabs d’indicateur de progression par défaut de 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 objets de jeu. (Ce modèle n’est pas une exigence de l’interface IProgressIndicator.)

Définissez la propriété de Progress l’indicateur 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 façons.

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 d’indicateur

La propriété d’un State indicateur détermine les opérations valides. L’appel d’une méthode non valide entraîne généralement l’état d’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;
        }
    }