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

问题描述 投票:0回答:3

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

multithreading sleep godot thread-sleep
3个回答
1
投票

Godot 的

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 的一部分时,它将冻结编辑器但不会冻结当前正在运行的项目(因为该项目是一个独立的子进程)。


1
投票

单线:

yield(get_tree().create_timer(1), "timeout")

这将延迟执行以下行 1 秒。

通常为了方便,我把它做成一个

sleep()
函数:

func sleep(sec):
    yield(get_tree().create_timer(sec), "timeout")

sleep(1)
调用它延迟1秒。


0
投票

对于 Godot 4.0,同样的一行代码是:

await get_tree().create_timer(1).timeout
© www.soinside.com 2019 - 2024. All rights reserved.