1
我认为我想解决的问题对你们大多数人来说都很容易:) 假设我有一个类Node
,它有一个成员函数setPosition(float x, float y, float z)
。我希望能够在lua中定义一个类Node的变量,然后能够使用函数也形成Lua。 我知道有一些问题,Lua是C而不是C++,它有C++类的问题,但我也知道它是可以实现的。如何从lua脚本访问C++类的成员函数?
我认为我想解决的问题对你们大多数人来说都很容易:) 假设我有一个类Node
,它有一个成员函数setPosition(float x, float y, float z)
。我希望能够在lua中定义一个类Node的变量,然后能够使用函数也形成Lua。 我知道有一些问题,Lua是C而不是C++,它有C++类的问题,但我也知道它是可以实现的。如何从lua脚本访问C++类的成员函数?
为此我使用Luabind。有了它,您可以轻松地绑定C++类,以便在Lua中创建,访问和修改它们。你会用C编写的代码可能++看起来大致是这样的:
module(L) [
class_<Node>
.def(constructor<>)
.def("setPosition", &Node::setPosition)
];
然后,你可以在Lua这样说:
node = Node()
node:setPosition(x, y, z)
你也可以将绑定,使得看上去的Lua更自然一些,可以支持这样的事情:
node1 = Node(x, y, z)
node2 = Node()
node2.position = { x, y, z }
感谢您的回应。我已经构建并将luabind包含到了我的项目中,但问题是我在C++中有我的“游戏引擎”,我的RenderSystem(变量)已经定义了,而我没有访问它并调用如下所示:'Body x = RenderSystem-> createBody();'我已经知道如何使用Luabind公开一个类,但我怎么能实现呢? – Patryk 2011-04-24 13:53:11
然后你应该为RenderSystem类和它的createBody函数做一个绑定(也许使用Luabind),然后你可以从Lua调用它并对结果进行操作。或者我误解了你在找什么? – 2011-04-24 13:55:14