所以我一直在使用这个 game engine很长一段时间以来,我可以通过内置事件创建一个游戏,也可以使用 C++,但我最近尝试将 Lua 5.3 嵌入其中,但我在如何注册某个 C++ 方面遇到了问题Lua类,例如: 在游戏引擎的 C++ 中,我会像这样更改背景颜色:
#include "GDCpp/RuntimeScene.h"
void changeBackground(RuntimeScene & scene)
{
scene.SetBackgroundColor(250,100,85)
}
但我的问题是,我怎样才能在 Lua 中做到这一点?如何在 Lua 5.3 中注册该函数和类?
最佳答案
看看this示例。
您使用类名创建/请求一个元表,将成员函数(构造函数除外)推送到他并注册一个构造函数,该函数将您的类作为用户数据返回,链接与元表。
需要在自表上设置字段“__index”,以便以后的成员访问导致元表,而不是用户数据。 “__gc”发生在垃圾收集上——你的析构函数。因为 Lua 是用 C 编写的,所以分配用户数据内存不会调用构造函数,所以类实例放在堆上,地址传递给 Lua。
关于c++ - 如何在 Lua 5.3 中注册 C++ 类和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31380789/