【发布时间】:2013-10-22 00:32:55
【问题描述】:
我查看了多个来源,但我只是不明白它们。大多数情况下,它们要么使用像 luaBind 这样的库(我不想使用它,因为它依赖于 Boost),要么它们不是 C++ 中的实例对象,而是直接在 Lua 中创建的。
我有一个 Player 类,它封装在另一个类中来处理 Lua 调用。我在应用程序的初始化中创建了这两个对象的 std::vector 列表。
所以基本上我不希望 Lua 脚本创建这些播放器对象,我只想创建一个函数 getPlayer(),然后返回 Lua 包装的对象。我不知道从哪里开始定义 Lua 包装对象以供 Lua 调用,也不知道如何将对象的实例返回给 Lua,以便我可以使用它的调用。
这是我希望我的 Lua 脚本看起来像的示例:
player = getPlayer(1) -- Returns the Lua wrapped object from C++ where 1 is the object's index in the std::vector list
print("Player's name: ", player:name()) -- Print's the player's name
有人能给我指出一个体面的教程来解释如何做到这一点。我很确定这不是某种“从未做过,你为什么要这样做”的案例,所以肯定至少有一个教程在那里。我已经搜索了大约 2 天,没有任何阳性结果。
【问题讨论】:
-
LuaBridge 不依赖于 Boost。它的手册解释了很多关于在 Lua 和 c++ 之间共享对象生命周期的陷阱