【问题标题】:I'm getting an error: "attempt to compare nil with number" in Lua with LOVE2d我收到一个错误:Lua 中的“尝试将 nil 与数字进行比较”和 LOVE2d
【发布时间】:2022-01-11 02:42:42
【问题描述】:

我正在尝试使用 lua & love 制作我的第一款游戏,这是一款简单的按钮点击游戏,可以计算您点击随机出现的按钮的次数。我正在尝试在屏幕上添加一个从 20 开始倒计时的计时器(并最终使其在计时器达到 0 时出现结束屏幕)。

function love.update(dt)
  t = t + 0.01
end

function love.load (timer)
  while t > 0 do
    if t % 1 == 0 then
      timer = 1 + timer
    end
  end
end

但我收到此错误:“尝试将 nil 与数字进行比较” 我已经搜索并找到了tonumber(),但我不知道如何正确使用它。 我什至不确定这是制作计时器的最佳/方法...帮助?

【问题讨论】:

标签: lua love2d


【解决方案1】:

爱会打电话给你的love.load。在评估您的 while 条件 t > 0 时,它会抛出此错误,因为 t 不是数字而是 nil 值。 你需要用一个数字值来初始化 t,然后才能将它与另一个数字进行比较。

我的意思不是冒犯,但你的代码没有太多意义。

首先,您从未使用值初始化t。所以你不能对它做任何操作。

function love.update(dt)
  t = t + 0.01
end

love.load 在游戏开始时执行一次。 timer 实际上是一个包含游戏命令行参数的表值。所以把它加 1 没有任何意义。

function love.load (timer)
  while t > 0 do
    if t % 1 == 0 then
      timer = 1 + timer
    end
  end
end

即使t 是一个数字,t % 1 也始终是0。所以将它与0 进行比较是没有意义的。另外,除了尝试将值分别增加 1 或 0.01 之外,您的代码不会做任何事情。

请务必参考 love 和 Lua 手册以了解您使用的所有内容。

https://love2d.org/wiki/love.run

https://love2d.org/wiki/love

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2021-10-13
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多