将C++对象传递给Lua,以便Lua可以使用它。

使用 Luabind,我可以将类暴露给 Lua,并在 Lua 中创建这些类的实例。

module[L_state]
   [
      class_<Player>("Player")
      .def(constructor<>())
      .def("Update",&Player::Update)
   ];

test.lua
player = Player()
player:Update()

但如果我想在 C++ 中创建该 Player 实例,因为我想在 C++ 中调用其成员,但同时我也想将该 Player 实例暴露给 Lua,以便它仍然可以调用其函数:

player:Update()
点赞
用户847349
用户847349

你可以通过 luabind 将值推入 Lua 栈:

Player p;
luabind::globals(L)["player"] = p;

一个可运行的例子: travis-ci, source.

注意对象生命周期和所有权问题。 LuaBridge 手册可帮助您规划共享对象生命周期管理策略。还有一个更新的 LuaBind 手册 可供参考 LuaBind 生命周期策略。

2015-04-16 14:20:11