Unity 等待一定的时间再执行接下来的代码的方法

您所在的位置:网站首页 unity怎么完全退出程序界面 Unity 等待一定的时间再执行接下来的代码的方法

Unity 等待一定的时间再执行接下来的代码的方法

2023-09-10 01:57| 来源: 网络整理| 查看: 265

在写脚本代码的时候,我们会遇到这样的需求,需要我们等待一定的时间才可以执行接下来的代码。例如用C#代码实现:物品从A点平移到B点,等待3秒之后再平移到C点。这篇文章就是教你如何做到让代码等待3秒才可以继续运行的。

目录 方法一 Invoke()方法Invoke("方法名", 等待时间);Invoke(nameof(方法名), 等待时间); 方法二 协程受时间缩放影响不受时间缩放影响

方法一 Invoke()方法

设置一个变量(接下来都会使用这个变量):

private float duration; Invoke(“方法名”, 等待时间);

在你的方法体里可以加上这句:

Invoke("MethodName", duration);

别忘了补上名为MethodName的方法:

private void MethodName() { //这里写上duration秒后要执行的内容 }

MethodName方法里写的就是duration秒后要执行的内容

Invoke(nameof(方法名), 等待时间);

不过我更喜欢使用下面这种写法:

Invoke(nameof(MethodName), duration); private void MethodName() { //这里写上duration秒后要执行的内容 }

因为nameof()里的参数可以直接指向你的方法。使用string形式的方法名总是担心会拼错,如果代码行数太多的话,想找到MethodName方法也比较麻烦。

方法二 协程

自从我学会用协程之后,上述的Invoke()等待时间方法我就很少用了,因为使用协程可以使用匿名函数,可以选择update时间或者是真实时间,总之就是先进太多了,不过不熟悉协程的朋友使用起来可能会有点吃力。

受时间缩放影响

若你希望等待的时间受时间缩放影响,即update时间,那么你可以这么写一个协程方法:

/// /// 等待时间(受到Time.timeScale的影响) /// /// 等待时间 /// 等待后执行的函数 /// public static IEnumerator WaitForSeconds(float duration, Action action = null) { yield return new WaitForSeconds(duration); action?.Invoke(); }

然后在你的方法体里加上这句:

StartCoroutine(WaitForSeconds(duration, () => { //这里写上duration秒后要执行的内容 })) 不受时间缩放影响

若你希望等待的时间不受时间缩放影响,即真实时间,那么你可以这么写一个协程方法:

/// /// 等待时间(不会受到Time.timeScale的影响) /// /// 等待时间 /// 等待后执行的函数 /// public static IEnumerator WaitForSecondsRealtime(float duration, Action action = null) { yield return new WaitForSecondsRealtime(duration); action?.Invoke(); }

然后在你的方法体里加上这句:

StartCoroutine(WaitForSecondsRealtime(duration, () => { //这里写上duration秒后要执行的内容 }))

熟悉使用协程和了解匿名函数的朋友应该还能玩出更多花样吧hhhh

希望可以帮到你~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3