如何在 Godot 中暂停执行一段时间? 我真的找不到明确的答案。
Godot 的
Thread.Sleep(1000);
等价于 OS.DelayMsec(1000)
。文档说:
将当前线程的执行延迟
毫秒。msec
必须大于或等于msec
。否则,delay_msec 将不执行任何操作并打印一条错误消息。0
注意:delay_msec是一种延迟代码执行的阻塞方式。要以非阻塞方式延迟代码执行,请参阅SceneTree.create_timer。使用 SceneTree.create_timer 屈服将延迟放置在
下面的代码的执行,而不会影响项目的其余部分(或编辑器,对于 EditorPlugins 和 EditorScripts)。yield
注意:当在主线程上调用 delay_msec 时,它将冻结项目并阻止它重绘和注册输入,直到延迟过去。当使用 delay_msec 作为 EditorPlugin 或 EditorScript 的一部分时,它将冻结编辑器但不会冻结当前正在运行的项目(因为该项目是一个独立的子进程)。
单线:
yield(get_tree().create_timer(1), "timeout")
这将延迟执行以下行 1 秒。
通常为了方便,我把它做成一个
sleep()
函数:
func sleep(sec):
yield(get_tree().create_timer(sec), "timeout")
用
sleep(1)
调用它延迟1秒。
对于 Godot 4.0,同样的一行代码是:
await get_tree().create_timer(1).timeout