Unity协程详解

news2024/12/25 2:16:21

什么是协程

协程,即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.coloradmin.cn/o/1794331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python数据预处理系列】掌握数据清洗技巧:如何高效使用drop()函数去除不需要的列

目录 一、准备数据 二、使用drop函数去除掉指定列 在数据分析和预处理的过程中,经常会遇到需要从数据集中移除某些列的情况。本文将引导您了解如何使用drop函数高效地去除不需要的列,帮助您提升数据处理技能,确保您的数据集只包含对分析有价…

基于SSM框架的垃圾分类系统的设计与实现(含源码+sql+开题报告+论文+论文答辩模板)

图1 前台首页截图 首页展示:首页展示法律法规、公示公告、用户交流论坛、分类指南、垃圾站点、以及个人中心; 法律法规:展示我国《城市生活垃圾分类及其评价标准》以及《生活垃圾分类标志》等最新法律法规; 公示公告&#xff1…

机器视觉——多图颜色检测

今天我们实现将一组图片导入,然后对它们进行颜色检测分类。 比如下面一组图片: 首先我们需要导入这组图片 之后会在编辑器里面生成这样一段代码 之后再继续相应代码编写 ,我的思路是利用颜色空间转换 RGB转到HSV trans_from_rgb(R, G, B,…

docker镜像深入理解

大家好,本篇文章和大家聊下docker相关的话题~~ 工作中经常有关于docker镜像的问题,让人百思不解 docker镜像加载到系统中到哪里去了?docker load 加载镜像的流程是怎样的?为什么容器修改内容后,删除容器后再次开启容…

小公司的软件开发IT工具箱

目录 工具链困境 难题的解决 达到的效果 资源要求低 工具箱一览 1、代码管理工具 2、自动化发版(测试)工具 3、依赖库(制品包)管理 4、镜像管理 5、授权管理(可选) 待讨论:为什么不是…

1.音视频开篇

目录 音视频播放的原理 音视频数据格式YUV YUV数据存储比 ​编辑 YUV空间格式 RGB与YUV转换 音视频播放的原理 主要分为:解协议->解封装->解码->音视频同步->播放。当然,如果是本地播放,没有解协议这一步骤。 采集数据其实…

hutool工具实践-缓存

简介 依赖引入 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-cache</artifactId><version>5.8.17</version></dependency> hutool工具既可以像上一章hutool工具实践-验证码-CSDN博客所说直接全部引入&#x…

uniapp app与mini program相互跳转

app跳微信小程序 方法1&#xff1a;通过URL Schema跳转 参考文档获取 URL Scheme | 微信开放文档 方法2: 通过URL Link跳转 参考文档获取加密 URL Link | 微信开放文档 注意点&#xff1a; 上述两个方法生成的url&#xff0c;需要先通过浏览器打开链接&#xff0c;再自动跳…

5-Django项目--分页与搜索(资产页面)

目录 views/asset_data.py asset_data/asset_data.html 搜索与分页笔记: 搜索 整数搜索 字符串搜索 分页 views/asset_data.py # -*- coding:utf-8 -*- from django.shortcuts import render, redirect, HttpResponse from django.utils.safestring import mark_safe f…

如何使自己写的代码易读易懂?

〓● 如果代码可读性不佳、不容易理解&#xff0c;可能造成如下问题&#xff1a; 〓❏ 其他工程师浪费时间解读它&#xff1b; 〓❏ 误解导致引入缺陷&#xff1b; 〓❏ 其他工程师修改时破坏代码。 〓● 提高代码可读性&#xff0c;有时候可能使其变得更为冗长、占用更多的…

nesting in wrf

Choices for Nesting are:0 no nesting (only available for serial and smpar) 0. no nesting (only available for serial and smpar)1. basic2. preset moves preset moves3. vortex following • default is option 0 for serial/smpar, 1 for dmpar • smpar Shared Mem…

应对800G以太网挑战:数据中心迁移

在过去几年中&#xff0c;云基础设施和服务的大规模使用推动了对更多带宽、更快速度和更低延迟性能的需求。交换机和服务器技术的改进要求布线和架构随之调整。因此&#xff0c;800G以太网对数据中心迁移的需求&#xff0c;特别是对速率&#xff08;包括带宽、光纤密度和通道速…

YOLOv10(1):初探,训练自己的数据

目录 1. 写在前面 2. 值得关注的点 3. 训练自己的数据集 4. 阅读代码的小建议 1. 写在前面 很多人YOLOv9还没有完全研究透&#xff0c;YOLOv10出来了。 惊不惊喜&#xff0c;意不意外&#xff01; 据论文里提到&#xff0c;YOLOv10就是为了加速推理&#xff0c;在保证精度的…

C# NX二次开发-设置背景颜色

使用UF函数能直接设置UG背景颜色: 1.设置背景颜色选项为纯色: 2.编写更新背景颜色代码: var nxColor NXColor.Factory._Get(186);var rgb nxColor.GetRgb();double[] arr [rgb.R, rgb.G, rgb.B];theUf.Disp.SetColor(UFConstants.UF_DISP_BACKGROUND_COLOR, UFConstants.UF…

Java中连接Mongodb进行操作

文章目录 1.引入Java驱动依赖2.快速开始2.1 先在monsh连接建立collection2.2 java中快速开始2.3 Insert a Document2.4 Update a Document2.5 Find a Document2.6 Delete a Document 1.引入Java驱动依赖 注意&#xff1a;启动服务的时候需要加ip绑定 需要引入依赖 <dependen…

Qt无边框

最简单的可拖动对话框(大小不可改变) #ifndef DIALOG_H #define DIALOG_H/*** file dialog.h* author lpl* brief 无边框dialog类* date 2024/06/05*/ #include <QDialog> #include <QMouseEvent> namespace Ui { class Dialog; } /*** brief The Dialog class* 无…

Shopee本土店成本利润如何核算?EasyBoss ERP帮您精准掌控

这几年做跨境电商的老板们都在说东南亚市场广阔&#xff0c;在东南亚开本土店流量大&#xff0c;为了赚钱兴冲冲跑去东南亚开本土店&#xff0c;每天看着店铺不停出单。 心里乐呵呵&#xff1a;“本土店是真赚钱&#xff0c;马上要走上人生巅峰了&#xff01;” 但每月实际一对…

PbootCms微信小程序官网模版/企业官网/社交电商官网/网络工作室/软件公司官网

在数字化时代&#xff0c;企业网站已成为吸引潜在客户、提升企业形象、和扩大品牌影响力的必备工具。因此&#xff0c;一个优秀的企业网站模板显得尤为重要。 企业官网的内容框架通常都包含企业形象、产品或服务类型、信息展示等部分&#xff0c;设计师需要借助和企业形象契合…

图片改大小的3个步骤,快速在线处理图片的方法

图片改大小是现在使用图片时经常要使用的一个功能&#xff0c;因为在很多的网上平台都会有对图片尺寸和图片大小的要求&#xff0c;只有符合平台要求的图片才可以正常上传使用。想要快速调整图片大小&#xff0c;可以在网上使用在线改图工具来处理&#xff0c;只需要简单的几步…

快速上手 ngrok:将你的本地服务一键暴露到互联网,开发者必备技能!

想让外界轻松访问你本地电脑上的项目&#xff1f;试试 ngrok 吧&#xff01;无论是调试 Web 应用&#xff0c;还是进行跨网络测试&#xff0c;ngrok 都能帮你一键创建安全隧道&#xff0c;将本地服务映射到公共 URL&#xff0c;让全球任何地方都能访问。本文详细介绍 ngrok 的安…