特定条件までawaitしつつも毎フレームこれを実行したい!

async/awaitで、特定条件までawaitしつつも毎フレームこれを実行したい!みたいなめっちゃゲームでしか出てこなさそうなことをどう書くと綺麗に書けるか考えている。

とりあえず素直に書くならこう。

var cancellationTokenSource = new CancellationTokenSource();
await UniTask.WhenAny(
    UniTask.Delay(TimeSpan.FromSeconds(3), cancellationToken: cancellationTokenSource.Token),
    UniTask.Create(async () =>
    {
        while (true)
        {
            cancellationTokenSource.Token.ThrowIfCancellationRequested();
            Debug.Log($"{Time.frameCount} Tick");
            await UniTask.Yield();
        }
    })
);
cancellationTokenSource.Cancel();