当前位置:   article > 正文

Unity基础02——协程_unity 协程 while

unity 协程 while

1.什么是协程

协程实际上就是一个迭代器(IEnumerator),内部可以定义一些Yield Return挂起函数,判断协程函数内部执行的逻辑(通过Yield Return 延时,跳帧,等待下载或加载等操作将函数进行分步操作)

协程是基于生命周期的(下面会将执行顺序),是同步的,不是异步的(同一时间只会执行一个协程)

协程函数会被编译成一个状态机,每个状态都会关联下一个状态直至下一个为空

2.协程的使用

  1. public class Test : MonoBehaviour
  2. {
  3. public void Start()
  4. {
  5. //开启协程
  6. Coroutine testCoroutine = StartCoroutine(Test1());
  7. //停止指定协程
  8. StopCoroutine(testCoroutine);
  9. //协程可以同时开启多个
  10. StartCoroutine("Test1");
  11. //StopCoroutine("Test1")只能停止StartCoroutine("Test1")开启的协程,对StartCoroutine(Test())开启的协程无效
  12. StopCoroutine("Test");
  13. //停止本脚本内所有协程
  14. StopAllCoroutines();
  15. }
  16. IEnumerator Test1()
  17. {
  18. //等待下一帧Update之后,继续执行后续代码
  19. yield return null;
  20. //等待在所有相机和GUI渲染之后,直到帧结束,继续执行后续代码
  21. yield return new WaitForEndOfFrame();
  22. //等待下一个FixedUpdate之后,继续执行后续代码
  23. yield return new WaitForFixedUpdate();
  24. //等待3秒之后,继续执行后续代码,使用缩放时间暂停协程执行达到给定的秒数
  25. yield return new WaitForSeconds(3.0f);
  26. //等待3秒之后,继续执行后续代码,使用未缩放的时间暂停协程执行达到给定的秒数
  27. yield return new WaitForSecondsRealtime(3.0f);
  28. //等待直到Func返回true,继续执行后续代码
  29. //yield return new WaitUntil(System.Func<bool>);
  30. yield return new WaitUntil(() => true);
  31. //等待直到Func返回false,继续执行后续代码
  32. //yield return new WaitWhile(System.Func<bool>);
  33. yield return new WaitWhile(() => false);
  34. //等待新开启的协程完成后,继续执行后续代码,可以利用这一点,实现递归
  35. yield return StartCoroutine(Test1());
  36. //for循环
  37. for (int i = 0; i < 10; i++)
  38. {
  39. Debug.Log(i);
  40. yield return new WaitForSeconds(1);
  41. }
  42. //while循环,while(true):如果循环体内有yield return···语句,不会因为死循环卡死
  43. int j = 0;
  44. while (j < 10)
  45. {
  46. j++;
  47. Debug.Log(j);
  48. yield return new WaitForSeconds(1);
  49. }
  50. //终止协程
  51. yield break;
  52. }
  53. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/235973
推荐阅读
相关标签
  

闽ICP备14008679号