2013-11-29 3 views
3

У меня есть два Lua файлов, один из которых является main.lua:Lua: попытка вызвать глобальный 'rectangle_draw' (нилъ значение)

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() функции, надеясь ее нарисовать прямоугольник в определенном месте и т.д. и т.п., но всякий раз, когда я пытаюсь запустить мою маленькую программу, которую я г et this error:

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

Traceback 

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

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

ответ

3

Вы не являетесь экспортом с 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 

Пожалуйста, см this section в руководстве Lua, и this page на wiki-пользователях Lua для получения дополнительной информации о том, как модули и require работа.

Смежные вопросы