MRが楽しい

MRやVRについて学習したことを書き残す

UniTaskのWaitUntilを使って特定の値や条件がTrueになるまで処理を待機する

本日は UniTask の小ネタ枠です。
UniTaskのWaitUntilを使って特定の値や上限がTrueになるまで処理を待機する方法を記事にします。

WaitUntil

WaitUntil は指定されたデリゲートが True に判定されるまで処理を待機します。

await UniTask.WaitUntil(() => isStart);

サンプルコード

以下のサンプルコードを作成しました。
外部から OnClick メソッドが呼ばれて変数の値が変わるまで Start の最後の処理を待機します。
・WaitUntilTest.cs

using Cysharp.Threading.Tasks;
using UnityEngine;

public class WaitUntilTest : MonoBehaviour
{
    private bool isStart = false;
    
    async void Start()
    {
        Debug.Log("start");
        
        await UniTask.WaitUntil(() => isStart);
        
        Debug.Log("end");
    }
    
    public void OnClick()
    {
        isStart = true;
    }
}

シーンにスクリプトを配置し、ボタン押下でメソッドが呼び出されるようにします。

シーンを再生して動作を確認します。
以下の通り、ボタンを押下するまで処理を待機できました。