沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


scripting:native:timer

📚 Native/Timer

计时器是开发阶段常用功能,可进行等待指定时间\间隔几次执行某段代码。

计时器实例在【切换世界\地图】时将会重置(切换世界前创建的计时器,在加载新世界时将会被清空)。

📒 Property

📘 timer.Action

获取当前计时器设定的函数(只读)。

📘 timer.Time

获取当前计时器设定的秒数(只读)。

📘 timer.LastTime

获取当前计时器上次创建\执行的时间(只读)。

📘 timer.Repeat

获取当前计时器设定的重复次数(只读)。

如果设置为0则表示无限重复。

📘 timer.OverCount

获取当前计时器已经重复过的次数(只读)。

📘 timer.Tag

设置当前计时器设定的标签,默认为null

Tag标签仅有筛选的功能作用,如果不需要使用Timer.Find()功能可以忽略。

📒 Static Function

📘 Timer.GetRealTime()

获取当前时间(Timer所用的时间单位,以秒为单位,并非现实时间)。

扩展:可通过用Timer.GetRealTime() - myTimer.LastTime 获取某个timer下次执行剩余时间。

function Timer.GetRealTime(): float

📘 Timer.Create()

新建一个计时器,定时\定次执行指定代码。

如果repeat == 0则表示无限重复计时器。

特别注意:Timer代码可能在延迟后的不同的阶段执行,请注意执行时检查相关引用是否存在(因为有可能在此期间,某些引用已经失效,导致空指针异常)。

function Timer.Create( action: Action, time: float, repeat: int = 1, tag: string = null ): Timer //返回Timer实例,可引用
Timer.Create(() => {
    DLog("Output in one second!");
}, 1);
 
Timer.Create(() => {
    DLog("Output in one second. Output three times!");
}, 1, 3);

📘 Timer.Remove()

关闭一个计时器,销毁实例。

function Timer.Remove( timer: Timer ): bool
let myTimer = Timer.Create(() => {
    DLog("间隔一秒后,输出这段话");
}, 1);
 
if(myTimer != null) Timer.Remove(myTimer);

📘 Timer.Find()

根据Tag标识查找一个计时器,返回找到满足条件的第一个计时器。

此功能需要搭配timer.SetTag()等方法,设置标签配合使用。

function Timer.Find( tag: string ): Timer
Timer.Create(() => {
    DLog("间隔一秒后,输出这段话");
}, 1).SetTag("myTimer"); //这里也可以.Tag = "myTimer",或直接在Timer.Create()末尾参数填写tag,作用相同
 
let findTimer = Timer.Find("myTimer");
if(findTimer != null) Timer.Remove(myTimer);

📒 Function

📘 timer.SetTag()

为指定Timer设置一个标签,以供Timer.Find()识别使用。

需求简单等情况可使用此方式,如果有较多实例的情况下,建议使用变量储存的方式,而不是动态寻找Tag。

function timer.SetTag( tag: string )

scripting/native/timer.txt · 最后更改: 2024/07/23 03:55 由 bibiboxs