繁体   English   中英

我收到一个错误:Lua 中的“尝试将 nil 与数字进行比较”和 LOVE2d

[英]I'm getting an error: "attempt to compare nil with number" in Lua with LOVE2d

我正在尝试使用 lua 和爱来制作我的第一款游戏,这是一款简单的按钮点击游戏,可以计算您点击随机出现的按钮的次数。 我正在尝试添加一个从屏幕上的 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()但我不知道如何正确使用它。 我什至不确定这是制作计时器的最佳/方法...帮助?

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

我并不是说这令人反感,但您的代码没有太大意义。

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

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

love.load 在游戏开始时执行一次。 timer实际上是一个表值,其中包含您游戏的命令行 arguments。 因此,将其增加 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 之外,您的代码不会做任何事情。

确保您参考爱和 Lua 手册以了解您使用的所有内容。

https://love2d.org/wiki/love.run <- 这非常重要,因此您了解这些功能是如何执行的。

https://love2d.org/wiki/love

尝试添加:

function love.load()
    t = 0
end

我还注意到while t > 0 do in love.load() ,这不会像您期望的那样工作,而是尝试将其放入love.update(dt)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM