微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

谁能帮助我清除错误?

如何解决谁能帮助我清除错误?

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 举报,一经查实,本站将立刻删除。