大多數綁定庫/包讓我們非常清楚如何公開一個類TYPE,以便它可以在Lua腳本上創建。如何推送現有/創建/實例化的類對象用於Lua腳本?
什麼是真正困難的是,如何給一個Lua腳本一個已經創建/實例化/分配的類對象,以便你可以從Lua腳本中調用它的暴露/綁定方法(更新對象也在在C++方面)..
如果這仍然不清楚,我會舉出我現在所擁有的真實例子。
即時通訊使用Lunar將我的AIAgent類方法公開給Lua。 它的工作,我可以創建在Lua腳本上的AIAgents ..但誰在乎,我不在Lua編程,我使用Lua編寫我的AI代理,我的遊戲引擎的一部分,由我的遊戲引擎創建,更新/碰撞檢測和響應/繪圖都是由C++代碼完成的,腳本應該做的唯一事情就是爲代理提供決策代碼(一種調用代理更新方法的lua協程)。這一決定化妝腳本訪問某些註冊(谷農曆)方法(GetHP,GetNAmmunition,GetPlayerPos,等..)
所以,我怎麼可以給我的腳本..對象類似的東西:
//-fake code- called on the AIAgent constructor, or something
lua_pushObject(luaState, this);
lua_setGlobal("aiAgentFromC++", -1); // object exposed trough "aiAgentFromC++" global var
請注意,方法已經公開,因爲我可以在腳本上創建新的對象,我只是不知道如何給腳本一個對象,我已經在c + +端。
您是否考慮切換到具有*網站*的Lua綁定系統?還是手冊?或者一些實際的文檔,除了一些很少解釋的示例代碼之外?我找不到「Lunar」的任何內容。 SWIG,Lua ++,LuaBind等等,這些都是真實的文檔。農曆不是。 –
LuaBind很慢,我在StackOverflow上尊敬這裏說的一個傢伙; SWIG看起來令人難以置信的複雜,我尋找輕量級軟件包,如果你可以推薦我一個,我真的很高興..我雖然月球是好的,因爲我得到它的工作快,直到我碰到一堵牆.. – Icebone1000