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

Unity的协程(Coroutine)是什么?

在Unity的学习过程中,每当我有需要进行延时的需求时,豆包给到我的建议都是使用一个名为“协程(Coroutline)”的功能来进行处理,而不是使用C#线程中带的Sleep()函数,所以,协程是什么?

 

豆包给的答案是:协程是Unity提供的“时间管理工具”,能把长任务拆成多帧执行,中间可暂停,既不阻塞主线程,又能让“有时间跨度的逻辑”更简洁、更易维护。

协程是Unity中一种“分段执行、可暂停/恢复”的特殊函数,核心作用是【把一个“需要持续一段时间”的长任务,拆成多帧慢慢执行】——既不会阻塞游戏主线程(比如渲染、输入响应),又能让逻辑时间顺序清晰推进。

 

可以把协程想象成:一个能摸鱼的工人,它和Update()对比:

Update()函数一旦被调用,必须从头执行到尾才能返回,期间会“霸占CPU”,不能暂停;协程函数执行到某个暂停点(yield return ...)时,会主动“摸鱼”(暂停自己的执行,把CPU还给游戏主线程(让游戏继续渲染、响应输入)),等满足条件后(比如等1帧、等0.5秒),再从暂停的地方“复工”继续往下执行。

 

协程的核心特征

一、协程的“身份标识”:返回值是IEnumerator

协程函数必须满足:

1、返回值是IEnumerator(不是void / int等普通类型);

2、函数体里必须有yield return...(暂停点);

3、启动方式是StartCoroutine(协程函数名())(不能像其他函数那样直接调用);

 1 // 协程函数:返回值IEnumerator,有yield return null
 2 IEnumerator ChangeClothesCoroutine()
 3 {
 4     // ... 逻辑 ...
 5     yield return null; // 暂停点:等1帧后恢复
 6     // ... 继续执行 ...
 7 }
 8 
 9 // 启动协程(在Update里)
10 StartCoroutine(ChangeClothesCoroutine());

二、协程的“暂停开关”:yield return ...

yield return ... 是协程的核心(它决定了“暂停多久”什么时候恢复)。

yield return null:暂停当前协程,等待1帧(让游戏渲染完当前画面、处理完输入后),下一帧自动恢复执行;

其他常用的暂停方式:

1 yield return new WaitForSecond(0.5f):暂停0.5秒后恢复;
2 yield return StartCoroutine(另一个协程()):等待另一个协程执行完再恢复;
3 yield return new WaitForEndOfFrame():等待当前帧渲染结束后恢复;

三、协程的关键注意点(避免踩坑)

1、协程不是多线程:协程和Update、LateUpdate一样,都在主线程里执行!它只是“分段执行”,并不是“并行执行”(如果协程里有耗时操作(如循环10000次计算),游戏还是会卡住)。

2、协程依赖MonoBehaviour:必须挂在有MonoBehavior的游戏对象上,才能用StartCoroutine启动;如果游戏对象销毁,协程会自动停止。

3、停止协程的方式:

1 StopCoroutine(协程名):停止指定协程;
2 StopAll C哦routine():停止该脚本上所有协程;
3 游戏对象销毁/脚本禁用:协程自动停止;

4、协程的“暂停”是主动的:只有遇到yield return ...才会暂停,没有暂停点的协程回像普通函数一样一次性执行完。

 

http://www.gsyq.cn/news/52039.html

相关文章:

  • Spoon9.1打开kettle文件报lock错误解决方法
  • 2025年北京智能外呼系统公司权威评测:外呼电销机器人/呼叫中心系统/电销外呼软件源头服务商精选
  • MyEMS 五层架构拆解:从毫秒级采集到 AI 决策,能源数据如何实现全链路可控?
  • 2025年江苏车辆防撞雷达系统服务综合评估:车辆预警防撞系统/车辆防撞系统材料/车辆防撞预警监测源头服务商精选
  • [Python刷题记录]-二叉树的中序遍历-二叉树-简单
  • 2025年长沙心理咨询机构专业度排名,线上/在线公司口碑推荐
  • 2025油皮必囤面霜清单:构象编织霜领衔,控油抗老/补水不黏腻/敏肌适配款怎么选
  • 搭建环境:基于clickhouse的流式数据处理最小系统 - dalifornia
  • 干皮救星面霜榜单2025:高保湿抗老品牌全解析,深滋润强修护不踩雷
  • 2025 年 11 月铝合金门窗厂家推荐排行榜,断桥门窗,断桥推拉门窗,系统门窗,金属门窗,阳台门窗,封阳台门窗,平开门窗,推拉门窗,折叠门窗公司推荐
  • 2025 年 11 月不锈钢珠、碳钢珠厂家推荐排行榜,316/304/420/440不锈钢珠,轴承铬钢珠,高精度碳钢珠,弹簧定位钢珠公司精选
  • 【ImageMagick】批量修改文件夹内的图片尺寸
  • 把docker镜像和数据迁移到新的硬盘
  • 2025年四川车库地坪修补公司权威推荐:车库地坪金刚砂/车库地坪工程/车库环氧地坪施工服务商精选
  • 2025成都最好的留学中介机构是哪家公司
  • 2025成都最好的出国留学中介有哪些
  • 2025 年 11 月不锈钢珠厂家推荐排行榜,316/304/420/440不锈钢珠,轴承铬钢珠,高精度碳钢珠,Q235碳钢珠,GCr15铬钢珠公司推荐
  • 2025 年 11 月熔铜炉厂家推荐排行榜,上引熔铜炉,无氧铜上引炉,水平连铸熔铜炉,工频感应熔铜炉,半连铸熔铜炉机组,罩式退火炉公司推荐
  • 美国线世界(WireWorld)的音响线缆产品主要有哪些?
  • 【LVGL】LED部件
  • 数据采集与融合技术实践3
  • 题目:LeetCode 1437.是否相邻 1 都至少隔 k 个 0
  • 2025哪个留学中介做英国好
  • 2025留学机构十强西安
  • 2025成都市留学中介哪里好
  • 2025杭州好的留学中介有哪些地方
  • 2025出国留学机构哪个比较好一点
  • 2025年比较好的卡通布箱包布厂家推荐及选择指南
  • LC1513 全1子串数
  • 基于LiveWire算法的MATLAB实现代码