進捗状況インジケーター

進行状況インジケーター

シーンの例

進行状況インジケーターの使用方法の例については、シーンを参照して ProgressIndicatorExamples ください。 このシーンは、SDK に含まれている進行状況インジケーターの各 prefabs を示しています。 また、シーン読み込みなどの一般的な非同期タスクと共に進行状況インジケーターを使用する方法も示します。

Progress Indicator Examples 1

例: 進行状況インジケーターを開いたり更新 & 閉じたりする

進行状況インジケーターは、インターフェイスを実装 IProgressIndicator します。 このインターフェイスは、を使用して、使用しているオブジェクトから取得でき GetComponent ます。

[SerializedField]
private GameObject indicatorObject;
private IProgressIndicator indicator;

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

IProgressIndicator.OpenAsync()メソッドと IProgressIndicator.CloseAsync() メソッドは、タスクを返します。 非同期メソッドでは、これらのタスクを待機することをお勧めします。

MRTK の既定の進行状況インジケーター prefabs は、シーンに配置すると非アクティブになります。 IProgressIndicator.OpenAsync()メソッドが呼び出されると、進行状況インジケーターは、そのユーザーのオブジェクトを自動的にアクティブ化および非アクティブ化します。 (このパターンは、I進捗インジケーターインターフェイスの要件ではありません)。

インジケーターのプロパティを Progress 0-1 の値に設定して、表示される進行状況を更新します。 そのプロパティを設定して Message 、表示されるメッセージを更新します。 実装が異なると、このコンテンツがさまざまな方法で表示される場合があります。

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

インジケーターの状態

インジケーターのプロパティによって、 State 有効な操作が決定されます。 無効なメソッドを呼び出すと、通常、インジケーターはエラーを報告し、アクションを実行しません。

State 有効な操作
ProgressIndicatorState.Opening AwaitTransitionAsync()
ProgressIndicatorState.Open CloseAsync()
ProgressIndicatorState.Closing AwaitTransitionAsync()
ProgressIndicatorState.Closed OpenAsync()

AwaitTransitionAsync() 使用する前に、インジケーターが完全に開かれているか閉じられていることを確認するために使用できます。

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