GMS2 参数始终 returns 未定义

GMS2 Argument always returns undefined

我是 Game Maker Studio 2 的新手,每当我尝试使用 scr_tile_collision(collision_tile_map_id, 16, velocity_[vector2_x]); 调用我的脚本时,它都会指出参数未定义。在我的脚本中有以下内容,无论我是否将变量设为本地变量,脚本似乎都无法检测到参数。

/// @param tile_map_id
/// @param tile_size
/// @param velocity_array


var tile_map_id = argument0;
var tile_size = argument1;
var velocity = argument2;

// For the velocity array
var vector2_x = 0;
var vector2_y = 1;

show_debug_message(tile_map_id); // no matter which variable is placed here, it is undefined.

// Move horizontally
x = x + velocity[vector2_x];

// Right collisions
if velocity[vector2_x] > 0 {
    var tile_right = scr_collision(tile_map_id, [bbox_right-1, bbox_top], [bbox_right-1, bbox_bottom-1]);
    if tile_right {
        x = bbox_right & ~(tile_size-1);
        x -= bbox_right-x;
        velocity[@ vector2_x] = 0;
    }
} else {
    var tile_left = scr_collision(tile_map_id, [bbox_left, bbox_top], [bbox_left, bbox_bottom-1]);
    if tile_left {
        x = bbox_left & ~(tile_size-1);
        x += tile_size+x-bbox_left;
        velocity[@ vector2_x] = 0;
    }
}

// Move vertically
y += velocity[vector2_y];

// Vertical collisions
if velocity[vector2_y] > 0 {
    var tile_bottom = scr_collision(tile_map_id, [bbox_left, bbox_bottom-1], [bbox_right-1, bbox_bottom-1]);
    if tile_bottom {
        y = bbox_bottom & ~(tile_size-1);
        y -= bbox_bottom-y;
        velocity[@ vector2_y] = 0;
    }
} else {
    var tile_top = scr_collision(tile_map_id, [bbox_left, bbox_top], [bbox_right-1, bbox_top]);
    if tile_top {
        y = bbox_top & ~(tile_size-1);
        y += tile_size+y-bbox_top;
        velocity[@ vector2_y] = 0;
    }
}

从 GMS2 2.3.0 开始,GMS2 中的脚本需要在函数内。

通常这些脚本应该自动转换,但您可能没有这样做。
尝试制作一个新脚本,该函数将出现在那里(以及有关新脚本的评论中的一条消息),您将能够在该函数中分配参数。