debugging 如何在Lua中显示调试信息或console.log等效项

tquggr8v  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(219)

我正在使用Lua和LOVE2D创建许多游戏,但每当我实现一个新函数并想测试它时,或者只是想知道Lua中某个变量的值时,我要么在游戏屏幕上显示它,要么只是希望它能工作。
现在我的问题是......有没有办法在终端或其他地方显示一些信息,比如变量值或其他东西?就像javascript中的console.log在浏览器的javascript控制台中显示一些内容。那么,有没有办法做到这一点?
我用的是Mac,所以我有一个terminal,没有命令提示符。有没有办法在那里显示一些内容?其他任何地方也可以,我只需要看看那些值是否如预期的那样。

ltqd579y

ltqd579y1#

使用一个conf.lua文件来启用控制台,那么你应该能够使用一个标准的print()。你可以阅读wiki条目here

注意:您必须通过终端运行Lua和Love2D才能运行此命令。这样运行Lua和Love2D才能显示print语句:

/Applications/love.app/Contents/MacOS/love "/Users/myuser/Desktop/love2d-test-proj"

您只需要将一个conf.lua文件添加到与您的main.lua文件相同的位置。您的文件可能如下所示:

function love.conf(t)
    t.console = true
end

但是您可以从上面的链接复制整个配置文件,并编辑您需要的内容。
我不能完全肯定这一点,因为我没有访问Mac,但控制台是默认禁用的,即使在Windows上,没有打印显示,直到你打开它。

或者您也可以像某些游戏一样在游戏中显示调试信息。

我喜欢添加debugVariable = {}来记录每个循环中发生的事件,添加debugPermanent = {}来记录很少发生的事件。

function debugAddVariable(str)
  table.insert(debugVariable, str)
end
--..and similarly for debugPermanent

现在有一个函数来绘制调试信息:

function debugDraw()
  love.graphics.push()  --remember graphics state

  love.graphics.origin()  --clear any previous transforms

  love.graphics.setColor(--[[select color for debug info]])
  love.graphics.setFont(--[[select font for debug info]])

  for i, v in ipairs(debugPermanent) do
    love.graphics.print(v)
    love.graphics.translate(0, --[[fontHeight]])
  end
  for i, v in ipairs(debugVariable) do
    love.graphics.print(v)
    love.graphics.translate(0, --[[fontHeight]])
  end
  
  debugVariable = {}   --clear debugVariable to prepare it for the next loop
  love.graphics.pop()  --recall graphics state
end

我们在love.draw()的末尾调用这个draw函数,文本就会出现。
显然,这种方法可以无限地进一步细化,显示特定的变量,并为其他一些变量添加图形,以阐明您想要显示的信息,但这有点超出了问题的范围。

**最后,**请随意检查here,查看用户提交的调试库。

相关问题