timer - 如何在 Godot 中创建 timer?

如何在给定时间后在 Godot 中创建 timer destroys script 的对象?我希望在一段时间后从游戏中删除子弹以减少延迟。任何帮助都会很棒!

回答1

您可以使用一个 Timer 节点。您可以将其添加为子项,设置等待时间(以秒为单位) - 您可能将其设置为一次拍摄并自动启动 - 将 "timeout" 信号连接到您的 script,然后在方法调用 queue_free 上安全释放节点(和子节点,包括 Timer)。

你也可以从代码中做到这一点,如果这是你喜欢的。所以,让我们复习一下我刚才所说的内容,而不是从编辑器中进行,让我们看一下等效代码:

创建一个 Timer,将其添加为子项:

var timer := Timer.new()
add_child(timer)

设置等待时间(以秒为单位):

timer.wait_time = 1.0

设置为 oneshot:

timer.one_shot = true

不要将其设置为自动启动(即 timer.autostart = true,让我们启动它:

timer.start()

"timeout" 信号连接到方法。在这种情况下,我将调用方法 "_on_timer_timeout"

timer.connect("timeout", self, "_on_timer_timeout")

func _on_timer_timeout() -> void:
    pass

然后在那个方法 _on_timer_timeout 中,调用 queue_free

timer.connect("timeout", self, "_on_timer_timeout")

func _on_timer_timeout() -> void:
    queue_free()

回答2

您可能想要使用 SceneTreeTimer,如以下代码所示:

func die(delay: float):
    yield(get_tree().create_timer(delay), "timeout")
    queue_free()

请参考 Godot Engine 的 https://docs.godotengine.org/en/stable/classes/class_scenetreetimer.html?highlight=create_timer()

相似文章

c++ - Godot 引擎本身是如何构建的?

我正在考虑对引擎的源代码进行一些更改所以我查看了https://github.com/godotengine/godot上的源代码,但我完全不知道它是如何制作的向上。在网上我找不到任何关于引擎本身是如...

c# - 具有委托 C# 的计时器类

我需要实现Timer类来模拟倒计时时钟。Timer能够将带有Started、Tick和Stopped事件信息的消息发送给订阅事件的其他类型。我不能为此实现使用.NETSystem.Timer类。Tim...

随机推荐

最新文章