gpt4 book ai didi

c++ - 传递 C++ 对象以便 Lua 可以使用它

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:09:23 27 4
gpt4 key购买 nike

我了解 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()

最佳答案

您可以通过 luabind 将值压入 Lua 堆栈:

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

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

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

关于c++ - 传递 C++ 对象以便 Lua 可以使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29659750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com