c++ - 如何在 Lua 5.3 中注册 C++ 类和函数

标签 c++ lua

所以我一直在使用这个 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/

相关文章:

c++实现在dll外部定义的虚拟类,在dll中

function - Lua函数参数是如何传递的?

c - 如何在 Lua 脚本中通过 C 函数检索返回的字符串?

c# - .NET/C# 和 Java 的高性能数学库

c++ - 使用 Visual Studio 2010 的 CATCH 单元测试套件

c++ - 如何使用编码的 AAC 数据手动创建 AVPacket 以发送 mpegts?

c++ - 这里调用了哪个 std::string 构造函数?

字符串到表

windows - 在 'Lua for windows' 中设置运行文件的路径

lua - 对话框操作不起作用