首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unity yield新WaitForSeconds(2f);不工作

Unity yield新WaitForSeconds(2f);不工作是因为在Unity中,yield关键字用于协程(Coroutine)的控制流程,用于暂停协程的执行并在一定时间后继续执行。而WaitForSeconds(2f)是一个等待指定时间的内置类,表示等待2秒。

如果yield新WaitForSeconds(2f)不工作,可能有以下几个原因:

  1. 协程未正确启动:确保在调用yield语句的方法中使用StartCoroutine()方法来启动协程。例如:StartCoroutine(MyCoroutine());
  2. 协程未正确编写:确保在协程方法中使用yield return语句来暂停协程的执行。例如:
代码语言:txt
复制
IEnumerator MyCoroutine()
{
    yield return new WaitForSeconds(2f);
    // 继续执行其他操作
}
  1. 协程未正确执行:确保协程方法被正确调用,并且在适当的时机被调用。例如,在Update()方法中调用协程:
代码语言:txt
复制
void Update()
{
    StartCoroutine(MyCoroutine());
}

如果以上步骤都正确,但yield新WaitForSeconds(2f)仍然不工作,可能是由于其他代码逻辑或环境配置问题导致。可以尝试使用调试工具进行排查,或者检查Unity版本是否支持协程功能。

关于Unity中协程的更多信息,可以参考腾讯云的Unity开发者文档中关于协程的介绍:Unity协程

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity应用架构设计(10)——绕不开的协程和多线程(Part 1)

:把位置重置为初始状态 yield是个比较晦涩的技术,原因是编译器帮我们做了太多的工作(CompilerGenerate),导致我们无法理解到内部的实现。...要解惑yield这是第二个阶段:能知道枚举器是怎样工作的。 如果你很清楚上诉两个阶段的内部原理之后,要理解Unity中的Coroutine是非常简单的,你会了解为什么它是伪的“多线程”。...return new WaitForSeconds(1); Debug.Log("wait for 2s"); yield return new WaitForSeconds(2);...WaitForSeconds(2f); UnityEngine.Debug.Log("wait for 3s"); yield return new WaitForSeconds...)跳转到另一个状态 产出:yield 是和return连用, yield return之后的语句被编译器赋值给current变量,最终通过Current属性产出枚举项 小结 本文的初衷是想介绍如何在Unity

1.4K60

Coroutine,你究竟干了什么?

Coroutine大概是这个样子的……   随着自己对C#有了进一步的了解,我才慢慢发现,上面所言的那两个奇怪的IEnumerator和yield return,其实并不是Unity的什么独创,相反,他们却是...而至于yield return,其实是C# 2.0引进的一种实现迭代器模式的简便语法,在之前的C# 1.0中,如果要实现一个完整的迭代器,我们必须要分别实现IEnumerable和IEnumerator...OK,让我们继续回到Unity,通过上面的这些分析,我们大概就肯定了这么一点:Unity其实是使用了迭代器来实现延时的,像IEnumerator、yield return等的使用皆是为了配合C#中迭代器的语法...然而使用ILSpy查看WaitForSeconds实现源码的结果却又让我迷惑:WaitForSeconds的构造函数非常简单,似乎仅是记录一个时间变量罢了,根本就不存在什么While、yield之类的东西... coroutine begin at time : " + Time.time); yield return new WaitForSeconds(5); Debug.Log("Unity coroutine

1K10

unity协程简介

float time = 0f; float fadeTime = 2f; void Fade() { time += Time.dealttime; Color c = renderer.material.color...; c.a = 1f - time/fadeTime; renderer.material.color = c; } Unity中的协程方法通过yield这个特殊的属性可以在任何位置、任意时刻暂停...return null;//下一帧继续执行for循环 yield return new WaitForSeconds(0.1f);//0.1秒后继续执行for循环 } } 我们通过...值得注意的是,协程并不会在Unity中开辟的线程来执行,其执行仍然发生在主线程中。当我们有较为耗时的操作时,可以将该操作分散到几帧或者几秒内完成,而不用在一帧内等这个操作完成后再执行其他操作。...();//等待帧结束,等待直到所有的摄像机和GUI被渲染完成后,在该帧显示在屏幕之前执行 yield return new WaitForSeconds(0.3f);//等待0.3秒,一段指定的时间延迟之后继续执行

82820

Unity3D网络通讯(二)--UnityWebRequest及JsonUtility请求Http Restful

前言 上一篇《Unity3D网络通讯(一)--Asp.Net Core WebApi创建发布注意事项》已经把Asp.Net Core的WebApi搭建出来了,今天这篇就来看一下Unity3D使用UnityWebRequest...Unity3D Restful通讯 ? 微卡智享 01 创建项目 ? 新建了一个TransDemo的项目,这次用的是Unity最新的版本2020.1.2f1c1。 ?...然后又定义了一个的类WeatherData,里面定义了WeatherForecast[]的数组,创建这个的原因这里要说一下,Unity3D的JsonUtility组件本身不像NewtonsoftJson...这样基础工作基本都做完了,接下来就看看具体的实现。 03 JsonUtility的使用 JsonUtility的使用也非常简单,主要的就是两个方法ToJson和FromJson。 ?...脚本中定义一个JsonConvert()的协程方法,实例化一个的WeatherForecast并赋值后,首先通过JsonUtility序列化,再过3秒后返序列化回来。 ?

2K10

“疑难杂症”又二记

引子 近来工作又遇到一些“疑难杂症”,在此简单记下,自省省人 ~ 1.... :)),推荐有兴趣的朋友试试,虽说自己感觉Hotween的使用还挺顺畅,不过小坑还是踩到了一个:   对于一些连续的tween效果,使用Hotween + yield return new WaitForSeconds...的组合方式个人感觉还是挺容易理解的,于是项目中的不少地方都出现了类似下面这种形式的代码:   Hotween.To();   yield return...产生的ABSTweenComponent(Hotween中的Tweener,Sequence都继承于他),当然个中细节很多,在此就不一一赘述了,值得一提的就是Hotween在时间相关的逻辑上大抵都仰仗于Unity....);   虽然你使用WaitForSeconds等待了duration时间,但实际上相对Hotween而言,duration时间还没有到(感觉颇有些相对论的味道 :)),动画仍然会在yield之后继续运行

26730

随便再聊一点点Coroutine(确实只是一点点~)

之前写过一点Coroutine相关的东西(这里和这里),大致讲了些自己关于Unity协程的理解,自己在平日的工作中也确实用到了不少相关的知识,遂而引发了一个比较细节或者说微妙(subtle)的思考:...考虑以下代码: IEnumerator TestCoroutine() { Debug.LogError("Before"); yield return null; Debug.LogError...结果很容易验证,正确的答案应该是前者,即”Before, End, After”,这种结果我一度认为可能是Unity本身StartCoroutine的实现问题,感觉上即便StartCoroutine中的协程是延迟执行的...return new WaitForSeconds(1); // 1 Debug.LogError("1 second elapsed ?")...return new WaitForSeconds(1); // 1 leftTime -= 1; // 2 } }   如果1处是延迟执行的,那么每一遍循环,逻辑在2处就有大约一帧的延迟,如果

37610

Unity应用架构设计(10)——绕不开的协程和多线程(Part 2)

那么问题来了,怎样在Unity中使用多线程呢?...Queue execute = null; //主线程推荐使用lock关键字,防止block 线程,以至于deadlock if (0 == Interlocked.Exchange...} } 值得注意的是,Queue不是线程安全的,所以需要锁,我使用了Interlocked.Exchange,好处是它以原子的操作来执行并且还不会阻塞线程,因为主线程本身任务繁重,所以我推荐使用...由于篇幅有限,我贴完整代码了,只分析其中最核心思路: 在Thread中有一个WaitFor方法,它每一帧都会询问异步任务是否完成: public bool Update(){ if(_isDown...return new WaitForSeconds(1); pinkRect.transform.DOLocalMoveY(-150, 2); yield return new WaitForSeconds

1.8K110

Unity中巧用协程和游戏对象的生命周期处理游戏重启的问题

那么重点就在执行的函数上,只要用到协程,就不得不提关键词 yield,先看它的语法: yield return ; yield break; (来源:https://docs.microsoft.com...Unity内置了一些yield指令(YieldInstruction): -)WaitForSeconds   等待指定的游戏时间(游戏流逝时间可用Time.scale调整) -)WaitForSecondsRealtime...既然是热更新,游戏重启我们肯定希望像安卓那样暴力: 1、先杀掉进程; 2、再重启启动进程; 不是不可以,只是在iOS环境下这个方案就行不通了。那怎么办呢?...RuntimeInitializeLoadType.BeforeSceneLoad)] static void OnBeforeSceneLoadRuntimeMethod() { // 在场景加载之前,可以做一些与游戏无关的一些初始化工作...Coroutine 使用筆記 [2] 对Unity中Coroutines的理解 [3] Unity 协程运行时的监控和优化

3K20

Unity-BattleStar丨11. 且听风吟:音乐与音效

本章目标 完成 Unity-BattleStar的Audio系统 最终效果展示:视频地址 一、导入资源文件 文件下载:地址 1、导入Package 2、运行_Scenes里面的BattleStar_GameScene...Animation默认播放动画应该空,否则即使写了改变播放动画,也不会执行我们写的程序,Unity会执行默认动画的播放 3、关于机器人射击的原因: 原代码发射射线检测玩家是用的如下代码 Physics.Raycast...但这儿即使隔一帧也没关系,因为我们已设置了开火一次后延迟换弹时间才能进行下一次开火 } } void Fire() { if (GunBulletNumber...return new WaitForSeconds(0.406f); GunBulletNumber = 25; ActiveFire = true;...activeAttack = false; //2S后允许下一次进攻 Invoke("AttackPlayer", 2f

8210
领券