如何在Lua 5.3中注册一个C++类和函数?

我已经使用这个游戏引擎有一段时间了,我可以使用内置事件或使用C++创建游戏,但我最近尝试将Lua 5.3嵌入其中,但我不知道如何将某个C++类注册到Lua中,例如:在游戏引擎的C++中,我可以这样更改背景颜色:

#include "GDCpp/RuntimeScene.h"

void changeBackground(RuntimeScene & scene)
{
     scene.SetBackgroundColor(250,100,85)
}

但我的问题是,我该如何在Lua中完成这个过程?如何在Lua 5.3中注册该函数和类呢?

点赞
用户2546626
用户2546626

你可以查看这个示例。

你可以创建/请求一个类名为参数的元表,将成员函数(不包括构造函数)压入其中,并注册一个构造函数,将你的类作为userdata返回并与元表链接。

将"__index"字段设置为self表是必须的,以便以后访问成员时引用到元表,而不是userdata。"__gc"在垃圾收集时执行——即析构函数。因为Lua是用C语言编写的,分配userdata内存时不会调用构造函数,所以类实例被放在堆上,并将其地址传递给Lua。

2015-07-13 13:44:08