我正为我的游戏制作一个菜单文件,并且不能将“退出”称为字段。它总是返回零。谁能告诉我为什么会这样?注意,它在代码中较早声明,而其他按钮功能确实有效。谢谢!
function love.mousepressed( x, y, button )
if button == "l" then
for k, v in pairs(buttons) do
local ins = insideBox( x, y, v.x - (v.w/2), v.y - (v.h/2), v.w, v.h)
if ins then
if v.action == "play" then
loadState("game")
end
end
if ins then
if v.action == "quit" then
love.event.quit()
end
end
end
end
end
答案 0 :(得分:0)
为什么play
和quit
绑定到同一个按钮? o.O
此外,无需检查ins
两次。重复的代码应该是一个红色标记:
if ins then
if v.action == "play" then
loadState("game")
end
end
if ins then
if v.action == "quit" then
love.event.quit()
end
end
那可能是:
if ins then
if v.action == "play" then
loadState("game")
elseif v.action == "quit" then
love.event.quit()
end
end
但是如果没有使用调试器,这就是你如何追踪这些问题:
1。在项目文件夹中创建名为conf.lua
的文件。
2. 至少包含这么多内容,将控制台附加到您的应用中:
function love.conf(t)
t.console = true -- Attach a console (Windows only)
end
3. 将调试输出添加到mousepressed
功能,以便查看正在发生的事情。
首先在应用执行的早期将其定义在此处。方便的打印功能:
function printf(...) print(string.format(...)) end
然后在函数中添加一些调试内容:
function love.mousepressed(x, y, button)
print('mouse button %d pressed at %d, %d', button, x, y)
if button == "l" then
printf('checking %d buttons', #buttons)
for k, v in pairs(buttons) do
local ins = insideBox( x, y, v.x - (v.w/2), v.y - (v.h/2), v.w, v.h)
printf('%d, %d is%sinside button %s (%d, %d, %d, %d)',
ins and ' ' or ' not ', k, x, y, v.x, v.y, v.w, v.h)
if ins then
print('executing action', v.action)
if v.action == "play" then
loadState("game")
elseif v.action == "quit" then
love.event.quit()
end
end
end
end
end
您还应该使用有意义的变量名称。 v
可以是button
。什么是k
?一个指数?然后可能是i
或index
。这是名字吗?然后是name
。等等等等。 k
什么也没告诉我们。