【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…

HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(九)

一、需要显式标注泛型函数类型实参 规则:arkts-no-inferred-generic-params 级别:错误 如果可以从传递给泛型函数的参数中推断出具体类型,ArkTS允许省略泛型类型实参。否则,省略泛型类型实参会发生编译时错误。 禁止仅基于泛型函数…

Perl脚本学习(一)-- 基础语法

系列文章目录 第一章 Perl脚本学习(一)-- 基础语法 一、Perl Perl 程序由声明与语句组成,程序自上而下执行,包含了循环,条件控制,每个语句以分号 ; 结束。Perl 语言没有严格的格式规范。 二、Perl简单使用…

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持…

认识R与数据库连接和网络爬虫,学会在R中使用SQL语言

R语言作为一种强大的统计计算和数据分析工具,不仅在数据处理和可视化方面表现出色,还在与数据库连接和网络爬虫方面具备强大功能。本文将介绍如何在R中进行数据库连接和网络爬虫,并展示如何使用SQL语言在R中进行数据操作。 一、R与SQL数据库 1、认识SQL数据库 SQL(Struc…

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

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

【并发编程】-4.Lock接口与AQS

Lock接口概念 概念:JDK1.5时,在Java.uitl.concurrent并发包中添加了Lock锁接口,其中定义了lock()、unLock()、tryLock()、lockInterruptibly()、newCondition()等一系列接口,它属于是JAVA语言层面的内置锁;特性&#…

47、PHP实现机器人的运动范围

题目: PHP 实现机器人的运动范围 描述: 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k…

探索云计算的未来:边缘计算如何重塑IT格局

目录 一、引言 二、边缘计算的基本概念与特性 1. 基本概念 2. 技术特性 三、边缘计算如何重塑IT基础设施 1. 分布式计算架构的兴起 2. 边缘节点的部署与管理 3. 数据流与业务逻辑的重新设计 4. 安全性与隐私保护的加强 四、边缘计算在关键行业的应用实践 1. 智能制造…

关联查询(xml)

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

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

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

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

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