【问题标题】:calling love functions in lua在lua中调用love函数
【发布时间】:2016-12-15 12:32:46
【问题描述】:

我已经使用 lua Rocks 安装了 lua,它工作正常。现在我想使用 love 库在我的 lua 脚本中做一些图形。但是我找不到任何关于如何将 love 代码链接到 lua 代码的文档......事实上我仍然对差异感到困惑。

我的印象是love是lua的一组库,但是love似乎有自己的二进制运行...意思是它自己的语言?

不管怎样,这是我用爱写一个 lua 脚本的悲伤的小尝试:

myluatest.lua:

if "test" == "test" then print("yes") else print("no") end   
love.graphics.print('love test', 400, 300)
print(string.byte("ABCDE", 3, 4))

如果我注释掉“love.graphics....”行,它就可以正常工作。这就是我运行脚本的方式:

lua myluatest.lua

我觉得我需要包含爱或其他东西,我只是找不到语法:(

【问题讨论】:

  • Löve 不是一组库,它是一个用 C++ 编写的框架,它使用 Lua(实际上是 Luajit)作为其脚本语言。事实上,在使用 Löve 时,您只需在 Lua 中编写一堆回调函数(如 love.loadlove.updatelove.draw),然后从 C++ 代码中调用和执行这些函数。
  • @user6245072 - 我猜这也意味着你根本不需要安装 lua(因为爱有自己的 lua51.dll)?

标签: lua love2d


【解决方案1】:

爱不是图书馆,没有什么可以包含的。 Love 是一个用 C++ 编写的应用程序,可以使用 Lua 编写脚本。 Love 使用 C API 将其内置的图形函数(用 C++ 编写)暴露给 Lua 环境。它也是应用程序驱动程序,这意味着您不能像运行常规 Lua 应用程序那样运行 Love 应用程序。你必须填写回调,提到here,然后Love会自动运行它们。

要使您的脚本工作,您必须将其合并到一个回调函数中。如果您希望某个任务在应用程序开始时运行一次,请使用love.load(),或者如果您希望它连续运行,请使用love.update()。只有love.draw() 可以包含对love.graphics.draw 方法的调用。

function love.draw()
    if "test" == "test" then print("yes") else print("no") end   
    love.graphics.print('love test', 400, 300)
    print(string.byte("ABCDE", 3, 4))
end

期待大量控制台输出,draw() 连续运行。

【讨论】:

  • 啊哈,非常感谢!,我明白了 - 我刚刚更新了我的代码 - 我还在尝试使用 lua filename 运行它,但我发现某个地方你需要运行整个文件夹并使用“love.exe”,例如:love folderpath,并且您的文件必须名为 main.lua。有没有办法运行一个不叫 main.lua 的独立文件?
  • 我不知道。您可以传递本质上是压缩目录的“项目文件”,但我认为这对您没有帮助。我知道一些像 ZeroBrain 这样的 Lua IDE 非常适合你,或者你可以编写一个简单的 bat 文件C:\path\to\love --console C:\path\to\projectdir 来帮助使开发更顺畅。
  • 谢谢你 - 是的,我让零脑一展身手,它有点相似,因为你必须告诉零脑使用哪个项目目录。没什么大不了的,我想在 c++ 中你总是需要从 main() 开始,所以它真的没有什么不同(我通常是一个 c++ 人)....只是想弄清楚选项:)
猜你喜欢
  • 2013-09-17
  • 2014-02-20
  • 2020-09-24
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多