当前位置: 首页 > news >正文

Unity协程详解

什么是协程

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

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

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

开启协程

开启协程的格式为:

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

{   

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

    //方法体

}

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

下面举个例子

public class test : MonoBehaviour
{void Start(){StartCoroutine(Printf1());Debug.Log(1);StartCoroutine(Printf3());}private IEnumerator Printf1(){Debug.Log(2);yield return 0;}private IEnumerator Printf3(){Debug.Log(3);yield return 0;}
}

运行结果

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

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

关闭协程

结束协程有两种情况:

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

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

终止协程有两种情况

中止所有协程:StopAllCoroutines();

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

yield语句

下面是一些常见的yield语句

 

http://www.lryc.cn/news/364485.html

相关文章:

  • 【iOS】UI学习(二)
  • React路由(React笔记之五)
  • 调用讯飞星火API实现图像生成
  • reduce过滤递归符合条件的数据
  • Go微服务: 基于rocketmq:5.2.0搭建RocketMQ环境,以及示例参考
  • Wpf 使用 Prism 开发MyToDo应用程序
  • vue-Dialog 自定义title样式
  • 数据库主键设计
  • 小熊家务帮day13-day14 门户管理(ES搜索,Canal+MQ同步,索引同步)
  • Android8.1高通平台修改默认输入法
  • 49. 字母异位词分组
  • 负压实验室设计建设方案
  • 作文笔记10 复述故事
  • 业务安全蓝军测评标准解读—业务安全体系化
  • 关于焊点检测SJ-BIST)模块实现
  • 使用 Logback.xml 配置文件输出日志信息
  • Allegro-开店指南
  • Spring AI 第二讲 之 Chat Model API 第二节Ollama Chat
  • 服务器环境搭建
  • 数仓建模—指标体系指标拆解和选取
  • 微信小程序如何在公共组件中改变某一个页面的属性值
  • TCP/UDP的区别
  • JavaWeb1 Json+BOM+DOM+事件监听
  • DSP6657 GPIO中断学习(只支持GPIO0-15)
  • vue数字翻盘,翻转效果
  • 【简单讲解TalkingData的数据统计】
  • JMeter的基本使用
  • Oracle和Random Oracle
  • word 无法自动检测拼写
  • docker和docker-compose的安装