Lua C API 从一个表格中创建另一个表格。

目前我有一个使用表格实现 OOP 的 lua 代码。

TCharacterController = {}
TCharacterController.speed = 10.0
TCharacterController.axis = "x"

function TCharacterController:new(o)
    o = o or {}
    setmetatable(o, self)
    self.__index = self
    return o
end

function TCharacterController:update()
    --this is a function that is called by the C application
end

这个概念是,我将为每个附加到我的应用程序中的对象的脚本实例创建一个子对象

ScriptObj = TCharacterController:new()

(这是为游戏而设想的)。因此,我有一个实体层,所有实体都将能够有 ScriptObj 附加到它们。我的想法是,脚本实际上是一个类,并且它为每个附加到它的实体实例化。

我的问题是,我如何使用 C API 实例化 TCharacterController 的实例?

原文链接 https://stackoverflow.com/questions/7828362

点赞
stackoverflow用户596285
stackoverflow用户596285

因为 new 函数使用了 self 引用语法糖,你需要将 self 作为第一个参数传递,其他的都是一个表查找函数调用:

lua_getglobal(L, "TCharacterController"); /* 获取表 */
lua_getfield(L, -1, "new");  /* 从表中获取函数 */
lua_insert(L, -2); /* 将 new 函数上移一位,使得 self 成为第一个参数 */
lua_pcall(L, 1, 1); /* 调用函数,返回的表留在栈中 */
2011-10-19 21:45:14