此函数将创建新的时间源。请阅读时间源以获得概述。
创建新的时间源不会自动启动它,您必须调用 time_source_start() 以激活它。
新的时间源只运行一次,除非指定了 repetitions 参数(如下所示)。
当您不再需要时,必须使用 time_source_destroy() 销毁时间源。
下面是该函数的参数明细:
这是控制新时间源的父时间源。这可能是time_source_global、time_source_game或已经存在的自定义时间源。
请参阅:内置时间源
这是一段时间,可以用秒或帧表示,具体取决于下一个参数中指定的单位。
使用帧作为单位时,时期必须是整数。非整数值向下舍入 (浮点),但低于 1 的值除外,这些值向上舍入为 1。
这是周期所用的单位,可以是 time_source_units_seconds 或 time_source_units_frames。
请参阅:时间源单位
通过使用 time_bpm_to_seconds(),可以使用 "每分钟-毫秒 (BPM)" 值。
必须指定在时间源过期时调用的"回调"方法。
您可以根据需要指定一个数组,其中包含调用方法时应传递给该方法的参数。
数组本身不会传递到方法中,而是将数组的每个元素作为单独的参数传递。
例如,如果函数需要参数 (x、y、object),则 args 数组可能如下所示:[30,600,obj_player]。
您可以根据需要指定 时间源 应重复多少次。值 1 表示它只运行一次,这是默认值。
您可以指定它应该重复的总次数,或者指定 -1 使其无限重复。
例如,如果将此设置为 3,并且时间源的周期为 "4 秒",则时间源将总共处于活动状态 12 秒,并且将每 4 秒调用一次回调方法。
这应该是 time_source_expire_nearest 或 time_source_expire_after。
请参阅:时间源过期类型
time_source_create(parent, period, units, callback, [args, repetitions, expiry_type]);
参数 | 类型 | 描述 |
---|---|---|
parent | Time Source | 控制新时间源的父时间源 |
period | Real | 时间源运行的时段,以给定单位表示 |
units | Time Source Unit Constant | 给定时段所在的单位 |
callback | Method or Script Function | 时间源过期时要调用的方法或脚本函数 |
args | Array | 可选 包含要传递到方法中的参数的数组 |
repetitions | Real | 可选 时间源应重复的次数,或 -1 表示无限次重复 |
expiry_type | Time Source Expiry Constant | 可选 时间源是在离其过期时间最近的一帧上过期,还是在下一帧上过期。 |
var _my_method = function()
{
instance_destroy();
}
time_source = time_source_create(time_source_game, 300, time_source_units_frames, _my_method);
time_source_start(time_source);
在本例中,我们希望实例在 300 帧后自行销毁。
代码首先创建一个只调用 instance_destroy() 的方法。
然后创建时间源,从游戏时间源继承。它将其周期设置为 300 帧。
最后,它启动时间源。
Make sure to destroy the Time Source when you no longer need it, using time_source_destroy, e.g. in the Room End event.
var _my_method = function()
{
show_debug_message("A second has passed!");
}
global.time_per_second = time_source_create(time_source_game, 1, time_source_units_seconds, _my_method, [], -1, time_source_expire_after);
time_source_start(global.time_per_second);
在此示例中,我们正在创建一个每秒过期一次的全局时间源。此代码将放置在脚本的根目录下。
代码首先创建一个将消息打印到输出日志的方法,输出 "A second has passed!"。
然后创建新的时间源,从游戏时间源继承。它将其周期设置为 1 秒。
该方法已传递到时间源,因此每次过期时都可以调用该方法。为参数指定了一个空数组。
重复计数设置为 -1,因此时间源从不停止并永远重复。其过期类型已设置,因此回调将在过期后的第一个帧上运行。
最后,启动时间源。