UniTask替换协程IEnumerator-02
上次写到使用UniTask来替换协程IEnumerator,后来想了下协程函数通常是无返回值的,也就是void,那我不需要返回值的时候是不是可以直接用void标记呢?答案是可以。
private IEnumerator Test1()
{
yield return new WaitForSeconds(5);
Debug.Log("IEnumerator WaitForSeconds 5");
}
public async void Test2()
{
await UniTask.WaitForSeconds(5);
Debug.Log("UniTask WaitForSeconds 5");
}
如图所示,在Test2()中使用async搭配void,即可实现Test1()中的等待效果
private void Start()
{
//StartCoroutine(Test1());
Test2();
Debug.Log("after WaitForSeconds 5");
}
private IEnumerator Test1()
{
yield return new WaitForSeconds(5);
Debug.Log("IEnumerator WaitForSeconds 5");
}
public async void Test2()
{
await UniTask.WaitForSeconds(5);
Debug.Log("UniTask WaitForSeconds 5");
}
那么在使用时,可以直接调用方法,不再依赖MonoBehaviour中的StartCoroutine接口,更加便捷。
值得注意的是,await必须搭配通过调用另一个异步方法返回的任务。
参考资料:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一半!
评论
ValineDisqus