为了解决问题,你需要在scr_create_buttons函数中添加代码以跟踪每按钮的实例ID。 然后,在控制器对象中修改your code为:

    if instance_number(obj_parent_button_menu) > 0
    {
    var tooltips_created = instance_number(obj_tooltip);

    if (global.menu_button_hovered && tooltips_created == 0)
    {
    scr_create_tooltips();
    show_debug_message("created");
    };

    var hovered_tooltip_id = point_find_with_layer(obj_tooltip, mouse_x, mouse_y, layer_self);
    if (hovered_tooltip_id <= 0) 
    {
     show_debug_message("no");
     }
    if (!global.menu_button_hovered) && (tooltips_created > 0)
    {
    with obj_tooltip[0] instance_destroy();
    }
    }

在scr_create_buttons函数中添加下列代码:

function scr_create_buttons(_array, _items_per_column, _sprite, _object){
    //...-existing code...
    for (var i = 0; i < _array_length; i += 1)
    {
    //...existing code...
    var _object_instance = instance_create_layer(button_x, button_y, "UI_2", _object,
    {button_id : _array_length - 1 - i, parent : _object});
    instance_set_variable(_object_instance, "text", //add the text for tooltip
    //...
    };
    }

在控制器对象的instance_destroy函数下,使用 instance_set_variable(_object_instance, "text", "") 给 tooltips 的 text 变量重置为 "" 以便重复点击时 tooltips 可以被重新创建。

在 scr_create_tooltips() 函数中添加代码将 tooltips 的实例ID保存到 global.tooltips_data 中。

var text = instance_variable_parent_exists(parent, "text") ? instance_variable_parent_get(parent, "text") : "";
function scr_create_tooltips()
{
    // ... existing code ...
    var _tooltips_length = array_length(_tooltips);
    var _tooltip_id = 0;

    for (var i = 0; i < _tooltips_length; i += 1) 
    {
        _tooltip_id = i;
        global.tooltips_data[_tooltip_id] = _tooltips[i];
        // instance_set_tooltip(obj_tooltip[_tooltip_id], "UI_2", global.tooltips_data[_tooltip_id].text);
        global.tooltips_data[_tooltip_id].x = obj_tooltip[_tooltip_id].x;
        global.tooltips_data[_tooltip_id].y = obj_tooltip[_tooltip_id].y;
    }
    return _tooltip_id;
}

最后改变 instance_destroy 函数的引用以使用 instance_set_variable。

if (!global.menu_button_hovered) && (tooltips_created > 0)
    {
    for (var i = 0; i < tooltips_created; i += 1) 
    {
        instance_set_variable(obj_tooltip[i], "text", "");
    }
    with obj_tooltip instance_destroy();
    }
}

然后你应该能看到 tooltips 以每个按钮的右方创建。