【Unity实战】yield return null还是WaitForEndOfFrame

当在Unity中编写协程(尤其是协程套无限循环)时,常常会用到yield关键字来控制协程的执行流程避免程序假死。以下是常见做法:

yield return null

当使用yield return null时,协程会在下一帧继续执行。这意味着协程将暂停一帧,然后在下一帧继续执行。使用yield return null可以在每一帧之间进行操作,比如更新游戏对象的位置、旋转或者其他计算。

IEnumerator MyCoroutine()
{while (true){// Do somethingyield return null;}
}

yield return new WaitForEndOfFrame()

与yield return null不同,yield return new WaitForEndOfFrame()会等待当前帧的渲染完成后再继续执行。这意味着协程会在当前帧的末尾执行,通常用于在所有渲染操作完成后再执行一些操作。

IEnumerator MyCoroutine()
{while (true){// Do somethingyield return new WaitForEndOfFrame();}
}

区别总结

  • yield return null会在下一帧继续执行,用于在每一帧之间进行操作。
  • yield return new WaitForEndOfFrame()会等待当前帧渲染完成后再执行,用于在渲染操作完成后执行特定操作。

有趣现象

正如上文总结,一个在下一帧继续执行,一个是等渲染结束然后继续执行。如果读者还是没什么感受的话,可以尝试写两个协程分别使用上文所提到的两种等待方式(最好留一个log输出),然后在编辑器执行。

运行过程中,尝试来回切换Scene和Game视图,看看log输出有什么变化。注意不要把这两个窗口独立出来,否则俩视图永远都是活动状态。

在这里插入图片描述

理论上你应该会发现当你切换到Scene视图时,你的WaitForEndOfFrame会卡住,永远不会启动新一轮循环;而使用null的部分却正常进行新一轮循环。

所以如果你遇到切后台或者编辑器切视图后协程暂停的表现,多半是WaitForEndOfFrame卡住了。如果代码和渲染有很强关联性,那么请继续用WaitForEndOfFrame,否则使用null。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49772.shtml

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

相关文章

SSM超市管理系统-计算机毕业设计源码12393

目 录 摘要 Abstract 1 绪论 1.1研究的背景和意义 1.2研究内容 1.3论文结构与章节安排 2 开发技术介绍 2.1 SSM框架 2.2 MySQL数据库 3 超市管理系统系统分析 3.1 可行性分析 3.2 系统流程分析 3.2.1 数据流程 3.3.2 业务流程 3.3 系统功能分析 3.3.1 功能性…

机器学习 | 回归算法原理——最速下降法(梯度下降法)

Hi,大家好,我是半亩花海。接着上次的最小二乘法继续更新《白话机器学习的数学》这本书的学习笔记,在此分享最速下降法(梯度下降法)这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目,…

使用 AntV G2 绘制折线图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 使用 AntV G2 绘制折线图 应用场景介绍 AntV G2 是一款基于 Vue 的数据可视化框架,可用于创建交互式图表。本代码展示了如何使用 AntV G2 绘制折线图,以可视化时间序列数据。 代码基本…

数据结构——队列(java实现)及相应的oj题

文章目录 前言队列队列的概念队列的实现队列的链表实现实现的方法与属性内部类实现节点入队列出队列获取队头元素但不删除判空获取队列元素个数 队列的数组实现循环队列方法属性实现:构造方法向循环队列插入一个元素,成功插入则为真。从循环队列中删除一…

Axivion Suite 7.8现已发布

现已实现100%覆盖MISRA规则,并加入了高级功能来提高代码分析能力。 我们很高兴地宣布Axivion Suite 7.8发布。全新版本的Axivion Suite对编译器、配置、分析、仪表板 (WebUI)和IDE插件的架构验证和静态代码分析功能均进行了升级。 100%覆盖所有可测试的MISRA规则 …

昇思25天学习打卡营第15天|K近邻算法实现红酒聚类

这个实验是关于如何使用MindSpore框架在红酒数据集上实现K近邻(KNN)算法来进行聚类分析的。KNN是一种简单但非常有效的机器学习算法,它通过计算样本之间的距离来决定其分类KNN算法的核心思想是,一个样本的类别可以通过它与训练集中…

Pytorch使用教学1-Tensor的创建

0 导读 在我们不知道什么是深度学习计算框架时,我们可以把PyTorch看做是Python的第三方库,在PyTorch中定义了适用于深度学习的张量Tensor,以及张量的各类计算。就相当于NumPy中定义的Array和对应的科学计算方法,正是这些基本数据…

【Nacos安装】

这里写目录标题 Nacos安装jar包启动Docker单体Docker集群 Nacos相关配置日志配置 Nacos安装 jar包启动 下载jar包 在官方下载链接,根据需求选择相应的版本下载。 解压 tar -zxvf nacos-server-2.4.0.1.tar.gz或者解压到指定目录 tar -zxvf nacos-server-2.4.0…

TikTok达人合作中的消费者行为研究:精准营销新趋势

随着全球社交媒体技术的飞速发展,TikTok作为短视频领域的佼佼者,其独特的达人带货模式不仅成为驱动消费市场发展的新力量,还深刻改变了消费者的购买行为。本文Nox聚星将和大家探讨TikTok达人合作过程中消费者的行为模式和偏好变化。 一、消费…

SkyWalking入门搭建【apache-skywalking-apm-10.0.0】

Java学习文档 视频讲解 文章目录 一、准备二、服务启动2-1、Nacos启动2-2、SkyWalking服务端启动2-3、SkyWalking控制台启动2-4、自定义服务接入 SkyWalking 三、常用监控3-1、服务请求通过率3-2、服务请求拓扑图3-3、链路 四、日志配置五、性能剖析六、数据持久化6-1、MySQL持…

企业怎么才能用上大语言模型?

题图|视觉中国 以ChatGPT为起点,大语言模型(LLM)用全面的技术创新,以及在用户和产业中的应用落地,再次掀起了一个AI新浪潮。 与它的前辈们相比,大语言模型因为打通了语言这一人类沟通中介&…

关联查询(xml)

多对多:数据库中需要有中间表,在两个实体类中都加入对方的List集合,在写查询语句时写三张表

MySQL第一阶段:多表查询、事务

继续我的MySQL之旅,继续上篇的DDL、DML、DQL、以及一些约束,该到了多表查询和事务的学习总结,以及相关的案例实现,为未来的复习以及深入的理解做好知识储备。 目录 多表查询 连接查询 内连接 外连接 子查询 事务 事务简介…

RTK高精度定位终端的功能跟用途

RTK高精度定位终端是一种集成了高精度定位技术的手持或便携式设备,其功能和用途广泛且重要。以下是RTK高精度定位终端的主要功能和用途: 一、功能 高精度定位: RTK技术通过接收卫星信号和地面基站的差分修正数据,实现厘米级甚至…

开源安全信息和事件管理(SIEM)平台OSSIM

简介 OSSIM,开源安全信息和事件管理(SIEM)产品,提供了经过验证的核心SIEM功能,包括事件收集、标准化和关联。 OSSIM作为一个开源平台,具有灵活性和可定制性高的优点,允许用户根据自己的特定需…

Java Linux操作系统

1、操作系统是协助用户调度硬件工作,充当用户和计算机硬件之间的桥梁 2、Linux内核 提供了linux系统的主要功能 3、发行版Centos:内核应用程序 4、快照:保存虚拟机的状态,当虚拟机出现问题的时候,可以恢复原始的状态…

华为强制恢复出厂设置后如何恢复数据?数据重生的2个方法介绍

华为作为全球知名的手机品牌,其产品在市场上广受欢迎。然而,有时由于各种原因,我们可能需要强制恢复出厂设置,这往往意味着数据的丢失。那么,如何在华为强制恢复出厂设置后,让数据“重生”呢?本…

Postman测试工具详细解读

目录 一、Postman的基本概念二、Postman的主要功能1. 请求构建2. 响应查看3. 断言与自动化测试4. 环境与变量5. 集合与文档化6. 与团队实时协作 三、Postman在API测试中的重要性1. 提高测试效率2. 保障API的稳定性3. 促进团队协作4. 生成文档与交流工具 四、Postman的使用技巧1…

Ubuntu24.04 deb文件 安装 MySQL8.4

Ubuntu24.04 deb文件 安装 MySQL8.4 ubuntu24.04 deb文件安装 MySQL8 升级系统 sudo apt update sudo apt -y dist-upgrade 安装常用工具 sudo apt -y install vim net-tools wget gcc make cmake lrzsz安装依赖 sudo apt -y install libmecab2 libjson-perl libaio1t64下载…

JavaEE - Spring Boot 简介

1.Maven 1.1 什么是Maven 翻译过来就是: Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通 过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。 可以理解为:Maven是一个项目管理工具…