Не понятно почему выдаёт 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