2015-07-13 62 views
2

所以我一直在使用這種game engine相當長的一段時間,我可以通過創建一個遊戲,有兩種內置的事件或我可以使用C++,但我已經最近嘗試嵌入的Lua 5.3到它,但我有一個關於如何一定的C++類註冊到Lua,例如問題: 在遊戲引擎的C++,我想改變背景顏色這樣的:我怎樣才能在Lua註冊一個C++類和函數5.3

#include "GDCpp/RuntimeScene.h" 

void changeBackground(RuntimeScene & scene) 
{ 
    scene.SetBackgroundColor(250,100,85) 
} 

但我的問題是,我怎麼能在Lua中做到這一點?我如何在Lua 5.3中註冊該函數和類?

回答

1

哈瓦上this例子看看。

創建/請求元表與類名,推動成員函數(除了構造函數)到他和寄存器返回你的類作爲用戶數據,與元錶鏈接的構造函數。自表

設置字段「__index」是必需的,後來成員訪問導致的元表,沒有用戶數據。 「__gc」發生在垃圾回收 - 你的析構函數中。因爲Lua是用C編寫的,所以分配userdata內存不會調用構造函數,所以將類實例放在堆上,並將地址傳遞給Lua。