如何在 Godot 中将线程暂停几秒钟?

Mom*_*oVR 8 multithreading sleep thread-sleep godot

如何在 Godot 中暂停执行一段时间?我实在找不到明确的答案。

小智 8

对于 Godot 4.0 来说,同样的一句话是:

await get_tree().create_timer(1).timeout
Run Code Online (Sandbox Code Playgroud)


The*_*aot 4

Thread.Sleep(1000);戈多的等价物是OS.DelayMsec(1000)。文档说:

将当前线程的执行延迟msec毫秒。msec必须大于或等于0。否则,delay_msec 将不执行任何操作并打印一条错误消息。

注意:delay_msec是一种延迟代码执行的阻塞方式。要以非阻塞方式延迟代码执行,请参阅SceneTree.create_timer。使用 SceneTree.create_timer 进行屈服将延迟放置在下面的代码的执行,yield而不影响项目的其余部分(或编辑器,对于 EditorPlugins 和 EditorScripts)。

注意:当在主线程上调用delay_msec时,它将冻结项目并阻止其重绘和注册输入,直到延迟过去。当使用delay_msec作为EditorPlugin或EditorScript的一部分时,它将冻结编辑器,但如果项目当前正在运行,则不会冻结项目(因为该项目是一个独立的子进程)。