Lua: попытка вызвать глобальный rectangle_draw (нулевое значение)

У меня есть два файла Lua, один из которых - main.lua:

require "player"
require "level"

function love.load()

end

function love.draw()
    rectangle_draw()
end

и еще один под названием player.lua:

function rectangle_draw()
    love.graphics.setColor(223, 202, 79)
    love.graphics.rectangle("fill", 20, 20, 32, 48)
end

Как видите, я пытаюсь использовать rectangle_draw() внутри функции love.draw(), надеясь нарисовать прямоугольник в определенном месте и т. Д., И т. Д., Но всякий раз, когда я пытаюсь запустить свою маленькую программу, я получаю эту ошибку:

attempt to call global 'rectangle_draw' (a nil value)

Traceback

main.lua:9: in function 'draw'
[C]: in function 'xpcall'

Что я делаю неправильно?


person Yliaho    schedule 29.11.2013    source источник


Ответы (1)


Вы не экспортируете какие-либо функции из player.lua. Правильный способ сделать это так:

player.lua

local M = {}

function M.rectangle_draw()
    love.graphics.setColor(223, 202, 79)
    love.graphics.rectangle("fill", 20, 20, 32, 48)
end

return M

main.lua

local player = require "player"
require "level"

function love.load()

end

function love.draw()
    player.rectangle_draw()
end

См. этот раздел руководства Lua и эту страницу в вики для пользователей Lua для получения дополнительной информации о том, как работают модули и require.

person Ryan Stein    schedule 29.11.2013