所以,我在披萨塔的模组中有一个“触发器”系统,我制作了一个
obj_trigger
父级和一个obj_delay
子级,父级有一个方法来执行触发器的主要功能。
obj_trigger 创建
trigger_id = -1;
target_trigger_id = -1;
on_enter = 1;
on_touch = 0;
on_trigger = 0;
multi = 0;
activated = 0;
execute = function(triggered) //gml_Script_anon_gml_Object_obj_trigger_Create_0_0_gml_Object_obj_trigger_Create_0
{
var triggered = argument0;
}
obj_trigger 房间开始
if (on_enter && (!activated))
{
execute(false)
if (!multi)
activated = 1;
}
obj_delay 创建
event_inherited()
delay = 1
execute = function(argument0) //gml_Script_anon_gml_Object_obj_delay_Create_0_0_gml_Object_obj_delay_Create_0
{
var triggered = argument0
if (triggered && (!on_trigger))
return;
if (triggered && activated)
return;
if (triggered && (!multi))
activated = 1
if ((delay == 0))
alarm[0] = 1
else
alarm[0] = (delay * room_speed)
}
这里的问题是我试图用新方法覆盖
gml_Script_anon_gml_Object_obj_trigger_Create_0_0_gml_Object_obj_trigger_Create_0
,但它却变成了gml_Script_anon_gml_Object_obj_delay_Create_0_0_gml_Object_obj_delay_Create_0
我正在使用UndertaleModTool,所以我不知道这是否与它有关。
在 GameMaker 中,函数文字在编译期间被“扁平化”,因此
greet = function(name) {
return "hi, " + name + "!";
}
变成类似于
的东西greet = method(self, gml_Script_anon_1);
与
gml_Script_anon_1
包含
return "hi, " + argument0 + "!";
如果您尝试覆盖事件内的方法,您也许可以在脚本列表中单独找到它,尽管这取决于 UTMT 实现。