如何解决谁能帮助我清除错误?
1.i,在games50中实现游戏马里奥时出错,错误显示在状态机及其类似物中
function StateMachine:change(stateName,enterParams)
assert(self.states[stateName]) -- state must exist!
self.current:exit()
self.current = self.states[stateName]()
self.current:enter(enterParams)
end
src/StateMachine.lua:18: attempt to call method 'enter' (a nil value)
追踪
src/StateMachine.lua:18: in function 'change'
main.lua:21: in function 'load'
[C]: in function 'xpcall'
[C]: in function 'xpcall'
解决方法
好。因此,您调用了一个名为“ enter”的函数,该函数包含在一个名为“ current”的表中,该表包含在另一个表中,该表通过函数“ change”的隐藏参数“ self”传递。
您首先需要检查如何调用“更改”功能。
检查是否类似:
xxxx:change(...
而不是:
xxx.change(...
因为在第二个版本中,未提供隐藏的“ self”参数(将包含对“ xxx”的引用)。
然后,通过打印self.current = self.states[stateName]()
之后检查“ self.current”是否有效:
print(self.current)
如果您在控制台中看到表引用,那就很好了。
在此阶段,它将向您显示问题是self.current = self.states[stateName]()
返回的表中不存在的“输入”功能。
您的所有代码听起来都像是在使用外部库,而您不能从中使用该库。我建议您使用自己的代码开始游戏,简单的游戏,而不要使用外部代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。