“quit”读作空字段 (nil field)?
2015-10-22 18:40:25
收藏:0
阅读:68
评论:1
我正在制作游戏的菜单文件,但无法将其调用为“quit”字段。它总是返回nil。有人能告诉我为什么会发生这种情况吗?请注意,它在代码中早先声明,而其他按钮功能确实起作用。谢谢!
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
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
为什么你会将
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 -- 将控制台附加到应用程序(仅限 Windows) end3. 向
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不告诉我们任何信息。