当前位置:   article > 正文

UniTask替换协程IEnumerator_c# unitask

c# unitask

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

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

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

可以改为

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

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

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

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

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

两种输出是截然不同的

这样Test2()函数就变成了异步方法Start()中的一段等待逻辑,与我们原本的初衷背离。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/95537
推荐阅读
相关标签
  

闽ICP备14008679号