2015-10-13 64 views
0

我有一個Lua腳本,是應該像一個遊戲組件,如:如何在C++/Luabridge中創建lua對象?

-- Enemy.lua 

Enemy = { 

    health = 5, 
    name = "DefaultEnemyName", 

    onUpdate = function() 
    health = health - 1 
    end, 

    healEnemy = function(amount) 
    health = health + amount 
    print(health) 
    end 

} 

我希望能夠創建該表/對象的新實例,並將其存儲在C++。

目前,如果我創建了一個lua_State和加載腳本兩倍的變量在每個表共享...

輸出會是這個樣子,如果我醫治一個健康的角度三種不同的敵人:

Enemy1, healEnemy(): 6 
Enemy2, healEnemy(): 7 
Enemy3, healEnemy(): 8 

所以我的問題是,如何在luabridge中創建此表的一個實例類型,而不會創建大量的lua_States(顯然這是一件壞事)?

在此先感謝!

回答

0

我認爲你需要使用lua類。看看這個鏈接Lua Object Creation Tutorial

+0

謝謝,但是在我從腳本中返回它後,我應該在C++中存儲'self'變量的變量是什麼類型? – Malaxiz

+0

看看這個[SO鏈接](http://stackoverflow.com/questions/1973788/tracking-lua-tables-in-c)。 Tom Nowell提供了一個鏈接,它解釋瞭如何在C++中存儲lua對​​象引用。 我不知道你到底想要做什麼,但我不確定你可以直接將Lua對象轉換爲C++對象。如果這是您真正想要的,您可以存儲對該對象的引用,但是我看不出如何提供幫助。 您可能需要對如何從lua類對象訪問數據成員進行一些研究。 – malhotraprateek

+0

謝謝。我結束了這樣做: https://imgur.com/kPLzfvC https://imgur.com/aaV3fOR – Malaxiz