我的lua脚本中有一个主循环,我包含了两个这样的对象:
local Menu = require("menu")
local InputHandler = require("inputhandler")以下是每个对象的脚本:
menu.lua
Menu = {
Active = false,
Initialise = function(self)
end,
ToggleMenu = function(self)
self.Active = not self.Active
print(self.Active)
end
}
return Menu和inputhandler.lua
InputHandler = {
KeyBinds = {
q = { scancode = 16, bind = "q", action = "Menu:ToggleMenu" }
},
RunKeyAction = function (self, key)
for k, v in pairs(self.KeyBinds) do
if (v.bind == key) then
_G[v.action]()
end
end
end
}
return InputHandler基本上,我试图将键盘键映射到脚本中的各种函数,所以当有人按下"Q“键时,它将运行与该键相关的方法。
所以如果我做这样的事
InputHandler:RunKeyAction("q")它将运行以下方法:
Menu:ToggleMenu()当我像现在一样运行这个脚本时,我会得到以下错误:
lua: ./classes//inputhandler.lua:8: attempt to call field '?' (a nil value)
stack traceback:
./classes//inputhandler.lua:8: in function 'RunKeyAction'
[string "<eval>"]:20: in main chunk有人能告诉我正确的做法吗?
感谢您的阅读
发布于 2019-05-22 15:58:51
使用
q = { scancode = 16, bind = "q", action = Menu.ToggleMenu }和
v:action()https://stackoverflow.com/questions/56260440
复制相似问题