Я нашел этот пост в блоге о том, как связать классы 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?
Спасибо.