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

Unity我可以在IEnumerator Start()中使用Start new WaitUntil(() => GameObject.Find("xx"))吗?

在Unity中,IEnumerator Start()是一个协程函数,用于在游戏对象启动时执行一系列操作。在该函数中,可以使用StartCoroutine()来启动一个协程,并在协程中使用WaitUntil()来等待某个条件满足。

在你提到的代码中,使用Start new WaitUntil(() => GameObject.Find("xx"))是不正确的。正确的写法应该是:

代码语言:csharp
复制
IEnumerator Start()
{
    yield return new WaitUntil(() => GameObject.Find("xx") != null);
    // 在这里可以继续执行其他操作
}

上述代码中,WaitUntil()会等待直到找到名为"xx"的游戏对象。一旦找到该对象,协程会继续执行后续的操作。

需要注意的是,WaitUntil()会在每一帧进行条件判断,直到条件满足或超过最大等待时间。如果条件一直不满足,协程将一直等待,可能会导致游戏卡顿或出现其他问题。因此,建议在使用WaitUntil()时,确保条件能够在合理的时间内满足,或者设置一个最大等待时间。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法提供相关链接。但腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择相应的产品进行使用。

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

相关·内容

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

推荐先看这篇文章:对UnityCoroutines的理解>> 协程简单来看分三部分: 1)启动,常用方法:StartCoroutine(IEnumerator routine) | StartCoroutine...在场景的主相机上挂一个脚本, Start()函数修改帧率 // 修改当前的FPS Application.targetFrameRate = 1; 上面的代码也可以放在场景加载之前的函数里,比如:OnBeforeSceneLoadRuntimeMethod...示例中使用的是点击按钮时,调用函数的重启方法(Restart) Restart方法只干了一件事,new一个GameObject对象出来,当这个GameObject被实例化时,该类的Start函数会被调用...,然后Start函数执行:销毁 –> 间隔一段时间(用上面的yield return null或者Unity提供的延时处理指令) –> 初始化 –> 销毁 new出来的GameObject对象。...Coroutine 使用筆記 [2] 对UnityCoroutines的理解 [3] Unity 协程运行时的监控和优化

3.1K20

用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 脚本中使用MonoBehaviour

并挂载到某个物体上,Start方法中使用协程加载 baidu 的首页的html,然后将它的html代码显示到文本框上。 操作步骤: 新建一个Unity热更新项目,或者打开上次的项目。...但是自从Unity2017.2之后,Unity将它的API拆分到了许多其他dll。...可以使用如下办法,来确定某个类在哪个dll里:VS,写下要确定的这个类的名字。 右键点击刚才写的类名,弹出菜单中选择速览定义,即可查看到这个类型所在的dll。 ?...38 function Start():IEnumerator 39 { 40 //创建WWW对象,并访问 www.baidu.com 41 var www...(Text)).text = "loading from baidu " + Time.frameCount; 46 //使用 yield关键字,可以使用Unity协程 47

1.3K130
  • Unity 协程

    (Func predicate) WaitWhile(Func predicate) 实现自定义函数 Tips 返回任意类型 实际开发中使用建议 前言 协程是unity提供的一个特殊的机制,他的特点就是可以方便的实现流程化的东西...使用方法名的带参数的调用居然使用没参数的重载方法(unity版本2018.4,使用方法名方式调用协程,不会识别重载,只会调用编译时第一个名称符合的方法),而使用方法体的方法却可以区分开重载。...由于协程的调用依赖于Mono脚本,实际开发我们可以进行其进行一个封装, 停止方式 public void StopAllCoroutines(); public void StopCoroutine...由上图可以发现,等待时间结束后的执行时机update后,lateupdate前。...predicate执行时机为首次执行为调用时机(比如在Start开启的协程,则本帧Start时执行,本帧的Update后则不再执行),之后执行时机为Update之后,LateUpdate之前。

    70920

    Unity之协程

    大家好,又见面了,是你们的朋友全栈君。 老早就对Unity这个功能产生了强烈的好奇,今天就要把这块骨头给啃了。 目前对协程的理解相当于有点像线程,但它实际上不是线程。...话不多说先来个代码给个初印象: 一、开启协程: Unity下创建了一个Cube(随便什么物体都行),然后把的cs文件挂载上去。...the first frame update void Start() { cube = GameObject.Find("Cube"); Debug.Log...yield return new WaitForSeconds(0f); Debug.Log(Time.time+" world"); } Unity的Console...,那么结束也应该是字符串形式: 有些注意事项: 1.多个协程可以同时运行,它们会根据各自的启动顺序来更新 2.协程不是线程,它们运行在同一线程,跟普通的脚本一样。

    54040

    学习|Unity3D使用协程实现减速停车效果

    ——《微卡智享》 本文长度为4303字,预计阅读11分钟 前言 上一篇《学习|Unity3d的导航实现循环线路移动》讲了一下定制循环行驶路线的方法,视频还有一个就是非会员的车辆需要人工收费,所以就要有一个减速停车等待的动画效果...上面的动图中我们可以看到无卡车辆在到达起杆前有一个慢慢减速后停止的效果(如果动图不明显可以看看历史文章里的这个视频),实现这个效果用的是协程的方式,其实在FixUpdate的函数中进行处理应该效果会更好一些...微卡智享 协程本身有点像线程,但又不同于线程,协程本身还是主程序运行的,完全不用考虑使用线程时如线程锁或是线程同步的问题。...Update()函数我们可以知道是每一帧都调用的,每一帧处理时我们可能会有不少事件需要进行判断处理,如果需要判断的事件还需要有计时的处理时,Update中看代码的可读性非常差,所有这里我们就可以用到协程了...扫描二维码 获取更多精彩 微卡智享 「 往期文章 」 学习|Unity3d的导航实现循环线路移动 学习|C#线程AutoResetEvent的使用 学习|C#的EventHandler的委托使用

    1.2K20

    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- Demo分析

    这些Demo中演示了如何对这些物体交互。实际情况,可以定制 我们来看ActionScriptStartUp.cs脚本,它是如何初始化的。 Start()函数返回IEnumerator。...通知Unity这个启动过程是一个协程。可以多帧完成 找到场景的进度条UI元素。已提供加载的进度条指示 指示Unity,本GameObject不要在切换场景时卸载。它保存了脚本引擎。...因为热更代码可以继承Monobehaviour,只需入口类型的构造函数或者包外代码,写了相应逻辑,同样可以实现。...+ isstop 63 64 +"AS3热更" 65 ; 66 67...然后 update函数,由于每帧的调用,这些立方体动了起来。 使用Unity Profiler,可以看到,每帧的100次循环和Vector3操作,没有产生任何的GC开销。

    1.4K100

    AR涂涂乐⭐六、 UGUI精灵格式、自动延迟截图、优化“4”、移出扫描框终止截图进程

    我们可以看到Vector2是淡蓝色,代表一个类,所以需要实例化。...因为unity,UI Scale Mode选的是Scale with Screen Scale,根据屏幕比例自动缩放,并且下方的 //Screen Match Mode——Match...} IEnumerator ScreenShot() { yield return new WaitForSeconds(2.0f); if (HasRe...} } } 本章注意事项: 1、要作为UGUI使用的图片,格式应该精灵格式,即其Texture Type——Sprite(2D and UI) 2、之前UI显示的画面都是Unity...自动生成的UI,所以不需要我们改动,但我们自己添加的需要改成上述格式 3、我们代码确定了识别框UI的大小,所以一定不能在Unity随意拖动识别框改变它的大小,否则计算不成功。

    6110

    Coroutine,你究竟干了什么?

    ,我们自然也可以使用这种方法来进行延时,但是相对而言,这种方法并不是最佳实践,更好的Unity实现延时的做法是使用Coroutine,就代码上来看的话,大概是这个样子:   IEnumerator...第一个想到的便是Lua“协程”,Unity的Coroutine难道也是这个概念?...这种语句,虽然使用了迭代器,但实际上也是一股脑儿运行完毕的,并不存在延时一说,那么Unity,为什么简单的返回一个WaitForSeconds就可以呢?   ...IEnumerator()之一,而C#的构造函数是没有返回值的,显然不符合这个原则,所以实际上构造函数我们无法使用什么yield return,另外的一点,虽然上述帖子的方法可以实现自己的延时操作...究其原因,可能是其简洁高效的特性深深折服了,想想以前那些个分散于代码各处的计时变量和事件逻辑,现在统统都可以做成一个个Coroutine,不仅易于理解而且十分高效,相信不管是谁,实际使用Unity

    1.1K10

    Coroutine,你究竟干了什么?(小续)

    先让我们来看一张MonoBehaviour的生命周期图(外国友人所做,原帖在这里): image.png   从图中我们可以看到,Unity对于MonoBehaviourCoroutine的处理,...那么依此而看,先前示例简单的LateUpdate模拟就有些捉襟见肘了:WaitForSeconds可能勉强还可以应付,但是像WaitForFixedUpdate以及WaitForEndOfFrame这类...IEnumerator,原理上都是控制IEnumerator MoveNext()的实际,在此并没有加以实现,一是自己懒惰了些(……),二是Unity本身也未明显提供用以实现这类处理的回调方法,不过有兴趣的朋友倒是可以试试...实际上还是特殊类型判断上做文章!Unity,每次调用StartCoroutine都会返回一个特殊的Coroutine类型,而这个类型便是我们实现嵌套Coroutine的突破口!...当然我们可以继续精化程序,但是毕竟不是一个热爱重造车轮的人,上面的那些个代码也仅是为了学习一下Coroutine的原理,仅此而已,那么就让我们暂时到此为止吧~ :)   下次再见了~~~

    71420

    Unity3D入门教程】使用C#脚本控制游戏对象

    大家好,又见面了,是你们的朋友全栈君。 前言 使用C#脚本控制游戏对象,是一项必备的基本技能。Unity3D可以使用的脚本有C#和javascript等。我们主要讲注意力集中C#上。...类里面有两个默认的函数Start()和Update()。Start()脚本运行开始时执行,而Update()游戏运行的每一帧都执行。...假设场景已经有了一个Cube,为了使我们的C#脚本可以随着游戏开始而运行,我们需要将脚本绑定在Hierarchy的某个物体上。不妨我们就把脚本绑定在方块上吧。...脚本的Start()函数添加这句话: Debug.Log("hello unity"); 然后点击游戏运行按钮,可以控制台窗口看到如下信息,表示脚本运行成功。...3 控制多个对象 前面我们控制对象的时候,使用了“this”,它指的是脚本被绑定的那个物体。如果我们要控制多个物体,就需要使用公有变量绑定物体或使用脚本动态寻找物体。

    1.3K20

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

    那么对于客户端应用程序而言,就一个人使用,还要需要考虑多线程? 是否需要多线程?...反之,如果应用程序很复杂,那么势必需要去分担主线程的压力,那么使用异步线程是个很好的主意。...所以,可以模拟foreach的实现,实际上foreach内部实现也大致相似。...如果你很清楚上诉两个阶段的内部原理之后,要理解Unity的Coroutine是非常简单的,你会了解为什么它是伪的“多线程”。 这是一段非常普通的代码,司空见惯。...本章内容对多线程开了个头,将在下篇文章说说怎样Unity使用和管理多线程。 源代码托管Github上,点击此了解

    1.4K60

    Unity3D使用Timeline实现过场动画

    ——《微卡智享》 本文长度为2477字,预计阅读6分钟 前言 Unity3D使用Cinemachine配合Timeline实现运镜效果》一篇我们已经实现了简单的运镜效果,这一篇还是利用TimeLine...上面动图中可以看到设置Timeline的整个流程,这样我们就是把两个动画通过这样的方式完成了,时间轴上有一个播放按钮,如果开头的实现效果的动画那样,每次设置时都可以进行播放看看效果。...status.classroom[tagname]; } } DoorController我们实例化了PlayerStatus,然后Start()把TimeLine中下面的PlayableDirctor...都加载进来,OnCollisionEnter事件通过判断碰撞体的标签,对应PlayerStatus的值来判断当前应该播放的动画,然后使用协程的方式进行在加载好的PlayableDirctor列表中找到对应的播放动画进行播放...扫描二维码 获取更多精彩 微卡智享 「 往期文章 」 Unity3D中使用Joystick Pack实现摇杆控制 预告——Joystick Pack使用效果 Unity3D网络通讯(六)-- UnityWebRequest

    2.6K21

    通过C#脚本实现旋转的立方体

    一、介绍 目的:通过一个简单的例子(鼠标点击,使立方体旋转和变色)熟悉UnityC#脚本的编写。 软件环境:Unity 2017.3.0f3 、 VS2013。...二、C#脚本实现 1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】 ? 2,Assets目录下创建文件夹,用于存放游戏的各种资源。...4,双击打开脚本,脚本中加入鼠标相关函数 ? 5,设定一个功能:当鼠标光标移动到物体上时,物体材质色彩变为黄色。...9,添加控制Text显示的脚本 使用UGUI组件必须在C#脚本添加UI的命名空间,这样我们才能引用。当bCube2的值为真时,Text组件显示“Cube正在旋转...”...,所以Update函数的if语句里面应添加以下脚本 GameObject.Find("Text").GetComponent().text = "Cube正在旋转

    1.2K30

    Unity 关于低版本是否可以引用高版本构建内容的可行性验证

    简介 本篇内容以Unity的一个相对较低的版本(2017.4.40)和一个相对较高的版本(2020.3.33),来验证低版本是否可以使用高版本构建的内容,包括如下内容: •Unity2017.4.40...(使用C#6)是否可以引入Unity2020.3.33(使用C#8)构建的dll并正常使用;•Unity2017.4.40是否可以加载Unity2020.3.33构建的AssetsBundle...资源; 低版本是否可以引用高版本构建的dll Unity2020.3.33,我们开启一个协程,使用UnityWebRequest发起网络请求来获取百度知道网页(www.baidu.com)上的内容...生成dll动态库 如何将Unity使用的C#语言版本改为6.0 参考文章:配置Unity2017和VS2015使用C# 6.0[4] •Player Sttings中将Scripting Runtime...() { new TEST().Execute(this); } } 运行结果: 运行结果 低版本是否可以加载高版本构建的AssetsBundle •Unity2020.3.33

    1.2K10

    AR涂涂乐⭐八、(add)优化原代码“7”、正方形识别图改为矩形识别图、增加BGM和App 图标

    项目问题及解决思路 问题1:观察前面代码可发现,屏幕的宽和高start()时便被复制,不可改变,导致旋转屏幕高宽调转方向,代码数值却不会改变,发生问题。...()(截图时使用最新的高宽数值,且此函数只运行一次)。...此时截图保存在内存,未使用。...因为unity,UI Scale Mode选的是Scale with Screen Scale,根据屏幕比例自动缩放,并且下方的 //Screen Match Mode——Match...} } } 本章注意事项: 我们代码确定了识别框UI的大小,所以一定不能在Unity随意拖动识别框改变它的大小,否则计算不成功。 大家还有什么问题,欢迎在下方留言!

    6310

    通过C#脚本实现旋转的立方体

    一、介绍 目的:通过一个简单的例子(鼠标点击,使立方体旋转和变色)熟悉UnityC#脚本的编写。 软件环境:Unity 2017.3.0f3 、 VS2013。...二、C#脚本实现 1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】 ? 2,Assets目录下创建文件夹,用于存放游戏的各种资源。...4,双击打开脚本,脚本中加入鼠标相关函数 ? 5,设定一个功能:当鼠标光标移动到物体上时,物体材质色彩变为黄色。...9,添加控制Text显示的脚本 使用UGUI组件必须在C#脚本添加UI的命名空间,这样我们才能引用。当bCube2的值为真时,Text组件显示“Cube正在旋转...”...,所以Update函数的if语句里面应添加以下脚本 GameObject.Find("Text").GetComponent().text = "Cube正在旋转

    1.7K60
    领券