【问题标题】:Pass C++ Object so Lua can use it传递 C++ 对象,以便 Lua 可以使用它
【发布时间】:2015-06-21 23:25:33
【问题描述】:

我了解 Luabind 可以公开类,然后可以在 lua 中创建这些类的实例。

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

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

但是,如果我想在 C++ 中创建该播放器实例,因为我想在 C++ 中调用它的成员,但我还想将相同的播放器实例公开给 Lua,以便它仍然可以调用它的函数,例如:

player:Update()

【问题讨论】:

  • 如果你想保持这种方式,你可以从 C++ 调用 lua 函数来创建和访问实例。

标签: c++ lua luabind


【解决方案1】:

您可以通过 luabind 将值推送到 Lua 堆栈:

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

一个可运行的例子:travis-cisource

附:当心对象生命周期和所有权问题。 LuaBridge 手册有助于规划共享对象生命周期管理策略。 + LuaBind 生命周期策略的更新LuaBind manual

【讨论】:

  • 正是我想要的谢谢!对于我的流程,该对象将适用于整个应用程序,因此不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2011-07-09
  • 2017-05-20
  • 1970-01-01
  • 2019-03-23
相关资源
最近更新 更多