Unity中的协程

发布时间:2024年01月24日

前言

在学习unity的过程中会遇到“协程”的概念,听到协程我们脑海里应该会想到它
请添加图片描述
当然不是一个东西,两者可以说不相干,下面就讲一下什么是unity中的协程。

一、 什么是协程?

我们先看下官网手册上是怎么说的:

协程就像一个函数,能够暂停执行并将控制权返还给 Unity,然后在下一帧继续执行。

没错,在Unity中,协程是一种特殊的函数,能够在其执行过程中暂停并在稍后恢复。与常规函数不同,协程允许你在执行过程中等待一段时间、等待某个条件满足或者在每一帧执行一些操作。

二、如何声明一个协程

我们还是先看下官网手册怎么说的:

在 C# 中,声明协程的方式如下:
在这里插入图片描述
此协程本质上是一个用返回类型 IEnumerator 声明的函数,并在主体中的某个位置包含 yield return 语句。yield return null 行是暂停执行并随后在下一帧恢复的点。

看完之后是不是会觉得,不就是个private IEnumerator Fade(){}函数么,函数内容是制作颜色渐变效果,返回类型显而易见是IEnumerator,这就是协程,一个特殊返回类型的函数。

学过vue的应该更好的理解,因为这跟vue中的async、await是一样一样的,无非就是对应的换成了IEnumerator、yield

请添加图片描述

声明完了怎么运行呢?这里还要用到StartCoroutine()函数

要将协程设置为运行状态,必须使用 StartCoroutine 函数:
在这里插入图片描述

到这里你已经可以基本掌握并使用协程了。

三、协程的作用

协程的引入丰富了Unity中的编程模型。

主要作用可以分为以下几点:

  • 异步操作: 协程能够在等待的时候不阻塞主线程,允许异步操作更为灵活。
  • 流畅动画: 适用于需要按帧处理的动画或移动,而不使用 Update 方法。
  • 复杂任务管理: 协程能够清晰地表达一系列需要在不同时间点执行的任务,提高代码的可读性和可维护性。

四、协程的优缺点

下面我们再说一下协程的各自优缺点
请添加图片描述

优点

  • 非阻塞: 允许在等待的同时继续执行其他任务,提高程序的响应性。
  • 灵活性: 可以根据需要在任意时间暂停、继续执行。
  • 简化逻辑: 可以将复杂的异步逻辑以更顺序、更清晰的方式表达。

缺点

  • 复杂性: 对于刚入门的初学者来说,理解协程的概念和使用可能相对来说比较困难。
  • 不适合所有场景: 并非所有的异步任务都适合用协程实现。

五、 应用示例

延迟执行

协程中还可以搭配 WaitForSeconds() 函数来引入时间延迟

IEnumerator DelayedExecution()
{
    Debug.Log("开始执行");
    yield return new WaitForSeconds(3f);
    Debug.Log("三秒后执行");
}

渐变效果

IEnumerator FadeIn(Image image, float duration)
{
    float timer = 0f;
    Color startColor = image.color;
    Color targetColor = new Color(startColor.r, startColor.g, startColor.b, 1f);

    while (timer < duration)
    {
        image.color = Color.Lerp(startColor, targetColor, timer / duration);
        timer += Time.deltaTime;
        yield return null;
    }

    image.color = targetColor;
}

六、总结

Unity中的协程是一种处理时间、动画和异步操作的强大工具。它们使得编写复杂的、依赖时间和顺序的逻辑变得更加容易。协程的引入提高了代码的可读性和可维护性,同时使得游戏开发更加灵活和响应式。

请添加图片描述

掌握协程unity进阶学习中不可或缺的一部分,通过灵活的使用协程,能够更好地处理游戏中的异步任务、动画效果以及其他需要时间管理的操作。

下期见,拜拜!
请添加图片描述

文章来源:https://blog.csdn.net/xks18232047575/article/details/135823267
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。