Lua:尝试调用全局'rectangle_draw'(零值)

时间:2013-11-29 08:18:43

标签: function lua love2d

我有两个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'

我做错了什么?

1 个答案:

答案 0 :(得分: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

请参阅Lua手册的this section和Lua用户wiki上的this page,了解有关模块和require如何工作的更多信息。