• Unity协程详解


    什么是协程

    协程,即Coroutine(协同程序),就是开启一段和主程序异步执行的逻辑处理,什么是异步执行,异步执行是指程序的执行并不是按照从上往下执行。如果我们学过c语言,我们应该知道,程序的执行按照从上往下的顺序依次执行,一个操作完成之后才能执行下一个操纵,也就是同步执行。而异步执行则是我们在执行一个操作的同时,也会同时执行其他的操作。

    比如说我们在执行一个函数的时候,按照同步执行的逻辑,我们只有在执行完这个函数之后才能继续后面的操作,而异步执行在执行这个函数同时,也可以同步执行其他的函数,不必等待当前函数操作完成。

    之后就可以通过不同的yield指令把我们的代码穿插在我们的代码生命周期中

    开启协程

    开启协程的格式为:

    IEnumrator 函数名(形参表)  //最多只能有一个形参

    {   

        yield return xxx; //恢复执行条件

        //方法体

    }

    这个yield return xxx是指满足xxx的条件之后在执行下面的操作,否则就暂时挂起

    下面举个例子

    1. public class test : MonoBehaviour
    2. {
    3. void Start()
    4. {
    5. StartCoroutine(Printf1());
    6. Debug.Log(1);
    7. StartCoroutine(Printf3());
    8. }
    9. private IEnumerator Printf1()
    10. {
    11. Debug.Log(2);
    12. yield return 0;
    13. }
    14. private IEnumerator Printf3()
    15. {
    16. Debug.Log(3);
    17. yield return 0;
    18. }
    19. }

    运行结果

    代码中yield return 0是指等待一帧的时间,也就是在执行完Printf1之后暂时挂起,等待一帧的时间,去执行主程序的操作,也就是输出1,然后在执行Printf3。这个一帧是指Update函数中一帧,并且Start函数是先于Update函数的。所以执行结果为2,1,3

    yield return 0和yield return null是同一个意思,都是等待一帧的效果。

    关闭协程

    结束协程有两种情况:

    当协程的方法体执行完毕将会自动结束

    调用StopCoroutine();方法中止协程执行

    终止协程有两种情况

    中止所有协程:StopAllCoroutines();

    使用对象实例中止指定协程

    yield语句

    下面是一些常见的yield语句

     

  • 相关阅读:
    【李沐深度学习笔记】矩阵计算(1)
    Java集中常见的排序
    解决图片底部有空白间隙的问题
    计算机视觉+人工智能面试笔试总结——目标检测/图像处理基础题
    计算机毕业设计Java毕业生就业管理系统(源码+系统+mysql数据库+lw文档)
    面向对象——抽象类
    #力扣:771. 宝石与石头@FDDLC
    gorm的增删改查
    【东华医为的实习与卫宁的入职工作】
    类加载与类文件结构
  • 原文地址:https://blog.csdn.net/qq_52905520/article/details/139396695