我发现这篇博客文章介绍了如何将c ++类绑定到lua:http://loadcode.blogspot.com/2007/02/wrapping-c-classes-in-lua.html
但它不能直接开箱即用。
我已经将函数调整为我自己的而不是Sprite类我正在使用NPC类。
我将函数setSpeed
更改为我自己调用的NpcSetPosition(lua_State *L)
,每当我在lua中调用以下内容时都会调用它:
local npc = Npc:New()
npc:SetPosition(5,5)
(npc:SetPosition函数)
现在有趣的是我如何调用checkSprite
中的NpcSetPosition
,如果我这样做,那么lua脚本将运行良好。但如果我这样做两次(我两次调用npc:SetPosition(5,5)
),我会收到以下错误消息:
Lua Compile Error: script.lua:10: bad argument #1-1 to: 'SetPosition' (table expected, got userdata)
这意味着我无法设置两次npc的位置,这是废话。 你知道出了什么问题吗? 它与lua堆栈有关吗? 感谢。
答案 0 :(得分:0)
听起来你错误地管理了你的堆栈。
你在做lua_settop(0);或类似的SetPosition函数? 如果您正确管理堆栈,则此错误将消失。