Не понятно почему выдаёт attempt to index a nil value (Lua)

В функции love.update(dt) через for я пробегаюсь по таблице buttons где хранятся данные кнопок.

function love.update(dt)
    --Buttons clicked
    for k, _ in pairs(buttons) do
        if buttons[k][1]:isClicked() then
            buttons[k]:action()
        end
    end
    --
end

Загрузка кнопок происходит так:

function Menu:loadScene()
    buttons = {
        Button_1 = {
            Button:new("1", 50, 500),
            action = function()
                Intro:loadScene()
            end
        },

        Button_2 = {
            Button:new("2", 50, 550),
            action = function()
                Intro:loadScene()
            end
        }
    }
end

И в этом случае если нажать на кнопку Button_1 то всё нормально, если нажать на Button_2 то выйдет ошибка:

main.lua:15: attempt to index a nil value

Traceback

main.lua:15: in function 'update' [C]: in function 'xpcall'

А если к примеру создать уже 3 кнопки, то 1 и 2 будут выдавать ошибку а 3 работать. Что тут не так?

Ссылка с демонстрацией проблемы на ютубе

Скачать исходники


Ответы (1 шт):

Автор решения: Mike V.

У вас в buttons[k]:action() вызывается Intro:loadScene(), где затирается глобальная таблица buttons :

function Intro:loadScene()
    buttons = {
        
    }
end
→ Ссылка