2011-04-23 163 views
1

我认为我想解决的问题对你们大多数人来说都很容易:) 假设我有一个类Node,它有一个成员函数setPosition(float x, float y, float z)。我希望能够在lua中定义一个类Node的变量,然后能够使用函数也形成Lua。 我知道有一些问题,Lua是C而不是C++,它有C++类的问题,但我也知道它是可以实现的。如何从lua脚本访问C++类的成员函数?

回答

2

为此我使用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 } 
+0

感谢您的回应。我已经构建并将luabind包含到了我的项目中,但问题是我在C++中有我的“游戏引擎”,我的RenderSystem(变量)已经定义了,而我没有访问它并调用如下所示:'Body x = RenderSystem-> createBody();'我已经知道如何使用Luabind公开一个类,但我怎么能实现呢? – Patryk 2011-04-24 13:53:11

+0

然后你应该为RenderSystem类和它的createBody函数做一个绑定(也许使用Luabind),然后你可以从Lua调用它并对结果进行操作。或者我误解了你在找什么? – 2011-04-24 13:55:14