Timer

继承: Item < Object

倒计时计时器。

描述

Timer 节点是一个倒计时定时器,是在引擎中处理基于时间的逻辑的最简单方法。当定时器的 wait_time 倒计时结束时,它将发出 timeout 信号。

在定时器进入场景树后,可以使用 start() 手动启动它。如果 autostart码]true,定时器节点也会自动启动。

无需编写太多代码,就可以在编辑器中添加并配置定时器节点。它发出的 timeout 信号也可以通过编辑器中的节点面板进行连接:

func _on_timer_timeout():
    print("Time to attack!")

注意:要在不实例化节点的情况下创建一次性定时器,请使用SceneTree.create_timer()注意:定时器会受到Engine.time_scale的影响。时间缩放比例越高,定时器结束得越快。定时器处理的频率可能取决于帧率或Engine.physics_ticks_per_second

属性

方法

bool

is_stopped() const

void

start(time_sec: float = -1)

void

stop()


信号

timeout() 🔗

当定时器到达终点时发出。


枚举

enum TimerProcessCallback: 🔗

TimerProcessCallback TIMER_PROCESS_PHYSICS = 0

更新每个物理进程帧的计时器(参见Item.NOTIFICATION_INTERNAL_PHYSICS_PROCESS)。

TimerProcessCallback TIMER_PROCESS_IDLE = 1

更新每个进程(渲染)帧的定时器(参见Item.NOTIFICATION_INTERNAL_PROCESS)。


属性说明

bool autostart = false 🔗

  • void set_autostart(value: bool)

  • bool has_autostart()

如果true,则计时器在进入场景树时会立即启动。

注意:定时器进入树后,此属性自动设置为false

注意:当计时器在编辑器中运行时,此属性不执行任何操作。


bool ignore_time_scale = false 🔗

  • void set_ignore_time_scale(value: bool)

  • bool is_ignoring_time_scale()

如果true,计时器将忽略Engine.time_scale并使用真实的经过时间进行更新。


bool one_shot = false 🔗

  • void set_one_shot(value: bool)

  • bool is_one_shot()

如果true,则计时器将在到达结束后停止。否则,默认情况下,计时器将自动重启。


bool paused 🔗

  • void set_paused(value: bool)

  • bool is_paused()

如果true,则计时器暂停。即使调用了start(),在此属性设置回false之前,暂停的计时器也不会处理。


TimerProcessCallback process_callback = 1 🔗

指定在主循环期间何时更新计时器(参见TimerProcessCallback)。


float time_left 🔗

计时器的剩余时间(以秒为单位)。如果计时器停止,则始终为0

注意:这个属性是只读的,不能修改,它基于wait_time


float wait_time = 1.0 🔗

  • void set_wait_time(value: float)

  • float get_wait_time()

定时器结束所需的时间,以秒为单位。每次调用start()时也可以设置此属性。

注意:计时器每个物理或进程帧只能处理一次(取决于process_callback)。不稳定的帧速率可能会导致计时器不一致地结束,如果等待时间低于大约0.05秒,这一点尤其明显。对于非常短的计时器,建议编写自己的代码,而不是使用Timer节点。计时器也受到Engine.time_scale的影响。


方法说明

bool is_stopped() const 🔗

如果计时器停止或尚未启动,则返回true


void start(time_sec: float = -1) 🔗

启动计时器,如果计时器已经启动,则重置计时器。如果计时器不在树内,则失败。如果time_sec大于0,则此值用于wait_time

注意:此方法不会恢复暂停的计时器。请参阅paused


void stop() 🔗

停止计时器。