Unity 协程

2025年3月17日 | 阅读 3 分钟

协程是一个允许暂停其执行并在满足条件后从同一点恢复的函数。 我们可以说,协程是 Unity 中使用的一种特殊类型的函数,用于停止执行直到满足某些条件,并从它离开的地方继续。

这是 C# 函数和协程函数的主要区别,除了语法之外。 一个典型的函数可以返回任何类型,而协程必须返回一个 IEnumerator,并且我们必须在使用 yield 之前返回。

协程可以用于两个原因:异步代码和需要在多个帧上计算的代码。

所以基本上,协程方便我们将工作分解成多个帧,你可能认为我们可以使用 Update 函数来做到这一点。 你是对的,但我们无法控制 Update 函数。 协程代码可以按需执行或以不同的频率执行(例如,每 5 秒而不是每帧)。

示例

在这里,yield 是一个特殊的 return 语句。 它告诉 Unity 暂停脚本并在下一帧继续。

我们可以用不同的方式使用 yield

yield return null - 这将在下一个帧调用所有 Update 函数后恢复执行。

yield return new WaitForSeconds(t) - 在 (大约) t 秒后恢复执行。

yield return new WaitForEndOfFrame() - 在所有相机和 GUI 渲染完毕后恢复执行。

yield return new WaitForFixedUpdate() - 在所有脚本上调用所有 FixedUpdates 后恢复执行。

yield return new WWW(url) - 这将在下载或未能下载 URL 处的 Web 资源后恢复执行。

启动协程

我们可以通过两种方式启动协程

基于字符串

语法

示例

基于 IEnumerator

语法

示例

停止协程

我们可以使用相同的方式停止协程; 在这里,我们将使用 StopCoroutine 而不是调用 StartCoroutine

基于字符串

语法

示例

基于 IEnumerator

语法

示例

示例 1

让我们看一个简单的例子来看看协程是如何工作的。 为此,创建一个圆形精灵。 然后创建一个脚本文件,将其命名为 ColorChanger.cs 并复制以下代码

将此脚本文件附加到精灵的组件。 并在 color1 和 color2 变量中选择两种颜色。

Unity Coroutines

现在,当您玩这个游戏时,我们的圆形对象将在 3 秒间隔内在两种颜色之间切换。

输出

Unity Coroutines

示例 2

输出

Unity Coroutines
下一个主题Unity UI