UniTaskの非同期関数内で待ちたくない

こういう攻撃用のinterfaceを作って、各実装を作る時、

interface IAttackController {
    UniTask AttackAsync();
}

class NormalAttackController : IAttackController {
    public async UniTask AttackAsync()
    {
        ... //なんか非同期の処理
    }
}

オブジェクトによっては、攻撃したくないからEmptyAttackControllerってなる時がある。
その際に、

class EmptyAttackController : IAttackController {
    public UniTask AttackAsync()
    {
    }
}

っという何もしないメソッドを持つクラスを作ってみた。
しかし、これだと返り値が無いよって怒られる。

public async UniTask AttackAsync()
{
}

っと書くと、今度はawaitしてないよってwarningが出る
こんなwarning↓

warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.


なので、

public async UniTask AttackAsync()
{
    await UniTask.Yield();
}

としてみたり、

public async UniTask AttackAsync()
{
    await UniTask.Delay(0);
}

としてみたりしたけど、これだと1Frame待ってしまう。

結論

public async UniTask AttackAsync()
{
    await UniTask.CompletedTask;
}

これでいけました!これなら待たないです!