本日は 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; } }
シーンにスクリプトを配置し、ボタン押下でメソッドが呼び出されるようにします。
シーンを再生して動作を確認します。
以下の通り、ボタンを押下するまで処理を待機できました。