news 2026/4/18 18:17:57

Unity学习90天 - 第 6天 - 学习协程 Coroutine并实现每隔 2 秒生成一波敌人

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity学习90天 - 第 6天 - 学习协程 Coroutine并实现每隔 2 秒生成一波敌人

欢迎回来!今天我们掌握协程的基本语法,学会用协程实现延时执行和周期性任务!

一、什么是协程?

协程(Coroutine)是一种"可以暂停、可以恢复"的特殊函数。

普通函数一旦开始执行,必须一口气跑完才能返回。协程不一样——它可以在任意位置暂停(yield),把控制权交还给 Unity,下一帧或指定时间后再恢复继续执行。

类比:普通函数像看电影——一旦开始必须看完;协程像看电视剧——看完一集可以暂停,明天接着看。

协程的核心价值:

场景不用协程用协程
3秒后执行某操作timer += Time.deltaTime计数yield return new WaitForSeconds(3)
每隔2秒生成敌人timer变量判断yield return new WaitForSeconds(2)循环
动画序列(先A后B再C)状态机 + 大量标志位一行一行顺序写
网络请求等待响应卡住主线程异步等待,不卡游戏

二、协程的基本语法

2.1 定义协程

// 协程返回类型必须是 IEnumerator IEnumerator MyCoroutine() { Debug.Log("开始"); yield return new WaitForSeconds(2f); // 暂停2秒 Debug.Log("2秒后继续"); }

2.2 启动协程

void Start() { // 方式1:StartCoroutine 字符串形式 StartCoroutine("MyCoroutine"); // 方式2:StartCoroutine 方法形式(推荐) StartCoroutine(MyCoroutine()); }

推荐方式2,因为方式1无法传参,且重名时容易出错。

2.3 停止协程

// 停止指定协程 StopCoroutine("MyCoroutine"); // 方式1 StopCoroutine(MyCoroutine()); // 方式2(不推荐,会启动新协程再停) // 停止该对象上所有协程 StopAllCoroutines();

三、yield return 的多种用法

yield return是协程的"暂停指令",不同的返回值有不同的暂停行为:

写法暂停多久用途
yield return null下一帧分帧执行,避免卡顿
yield return new WaitForSeconds(n)n秒延时执行
yield return new WaitForSecondsRealtime(n)n秒(不受Time.timeScale影响)暂停菜单倒计时
yield return new WaitForEndOfFrame()当前帧渲染完截图、计算最终位置
yield return new WaitForFixedUpdate()下一个 FixedUpdate物理相关操作
yield return StartCoroutine(Other())等待另一个协程完成协程嵌套
yield break立即结束提前退出协程

那么其实我们协程的知识就已经这些了,为了让大家能更加深入理解那么我们开始实现我们本章的脚本任务吧!

四、延时执行功能实现

using UnityEngine; public class DelayedSpawn : MonoBehaviour { public GameObject enemyPrefab; void Start() { // 启动协程 StartCoroutine(SpawnAfterDelay(3f)); } IEnumerator SpawnAfterDelay(float delayTime) { Debug.Log("等待 " + delayTime + " 秒..."); yield return new WaitForSeconds(delayTime); // 暂停指定秒数 // 时间到了,继续执行 Instantiate(enemyPrefab, transform.position, Quaternion.identity); Debug.Log("敌人已生成!"); } }

七、协程 vs Update 对比

特性Update 方式协程方式
代码可读性需要大量状态变量顺序执行,像写故事
计时逻辑timer += Time.deltaTimeyield return WaitForSeconds
内存开销无额外开销创建 IEnumerator 对象
适用场景每帧都要做的事延时、序列、周期性任务
停止控制用 bool 标志位StopCoroutine/StopAllCoroutines

由于这个其实很简单就不展示啦大家自己动手练一练吧!

今天的教学就到这里!接下来我将连续更新90天的Untiy教程从基础到一个网络部分,有兴趣的朋友们可以收藏关注,谢谢!如果有疑问,评论区见。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 17:55:48

从架构到实现:基于FPGA与AD7768-4的高精度同步数据采集系统设计

1. 高精度数据采集系统的核心需求 在工业振动监测和动平衡分析这类场景中,数据采集系统面临着严苛的技术要求。想象一下,当我们需要监测大型旋转机械的运行状态时,系统必须能够捕捉到微米级的振动变化,同时还要保证多个通道之间的…

作者头像 李华
网站建设 2026/4/16 15:49:13

索尼相机终极解锁指南:OpenMemories-Tweak完全使用教程

索尼相机终极解锁指南:OpenMemories-Tweak完全使用教程 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak OpenMemories-Tweak是一款专为索尼相机用户设计的强大功能…

作者头像 李华
网站建设 2026/4/16 15:47:16

Whisper-WebUI语音转文字终极指南:如何免费快速生成专业字幕

Whisper-WebUI语音转文字终极指南:如何免费快速生成专业字幕 【免费下载链接】Whisper-WebUI A Web UI for easy subtitle using whisper model. 项目地址: https://gitcode.com/gh_mirrors/wh/Whisper-WebUI Whisper-WebUI是一款基于OpenAI Whisper模型的语…

作者头像 李华
网站建设 2026/4/18 18:05:38

深度解密AI工具破解技术:系统指纹绕过与逆向工程完整指南

深度解密AI工具破解技术:系统指纹绕过与逆向工程完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …

作者头像 李华
网站建设 2026/4/18 17:52:59

【工具】内容分发工具Wechatsync

Wechatsync 完整教程:核心理念、设计模式、使用场景与案例分析一、项目概述 Wechatsync(微信公众号同步助手)是一款基于 Chrome 浏览器的开源插件工具,专为内容创作者打造,支持一键将文章同步到微信公众号、知乎、今日…

作者头像 李华
网站建设 2026/4/16 15:46:15

JDK-12 | 我为什么越来越喜欢用 Java 的 8 -> 11/17/21 迁移实战

这是专栏第 12 篇,也是这一轮 JDK 系列收官。 我想把这篇写成一份可以直接执行的迁移路线,而不是“升级口号”。 一、为什么我把迁移单独写一篇 很多团队不是不知道新特性好用,而是卡在这几个现实问题: 升级路径不清,担心一步跨太大; 兼容问题不可预期,怕线上风险; 没…

作者头像 李华