使用UniTask替换协程函数的要点是,一个IEnumerator函数对应一个async方法,不可多!本质上是async替换了IEnumerator。

例如我们需要把下面的协程改为UniTask

    private IEnumerator Test1()
    {
        yield return new WaitForSeconds(5);
        Debug.Log("IEnumerator WaitForSeconds 5");
    }

可以改为

    public async UniTask Test2()
    {
        await UniTask.WaitForSeconds(5);
        Debug.Log("UniTask WaitForSeconds 5");
    }
    

使用时注意,使用 _ = Test2(),不可用 await Test2();

    private void Start()
    {
        _ = Test2();
        Debug.Log("after WaitForSeconds 5");
    }

否则Start方法也会被添加async关键字,标记成异步方法

    private async void Start()
    {
        await Test2();
        Debug.Log("after WaitForSeconds 5");
    }

两种输出是截然不同的