在我的引擎中,目前每個實體都有自己的鏈接到它的lua_State *
。基本實體類具有功能linkScript(const char *scriptPath)
,它將調用luaL_dofile(luaState, scriptPath)
。所有這些工作都非常好,但是遊戲仍然很小。我一直在閱讀,我注意到我正在做的事情被認爲是不好的做法。建議我擁有全局的lua_State *
並將所有功能加載到全局內存中。起初,我想我自己「好吧,很簡單」,但我很快遇到了一個問題:每個Lua文件都定義了自己的init()
,tick()
並應用了一些EventHooks。如何在沒有每個腳本的情況下覆蓋前面的腳本定義這些功能的全局lua_State *
?這些功能在每一幀和/或每次觸發事件時被調用。我需要能夠區分每個腳本的實現。如何在遊戲引擎中使用全局lua_State *?
2
A
回答
3
你基本上想把每個腳本作爲一個具有自己功能的對象。當您加載腳本並運行腳本時,您不希望其功能進入全局命名空間,而是在特定於其的表中,並且具有存儲所有這些表的全局表。
有這樣做的方法很多,但一個想到的是這樣的:你創建一個全局表allObjects,然後爲你做的每個腳本:您要爲每個腳本做上述
-- object1Script.lua
allObjects.object1 = {
init = function()
...
end,
tick = function()
...
end
}
,但每一個都在allObjects
表中創建了不同的條目,第一個腳本的object1
,第二個腳本的object2
等。如果您不想命名腳本,則可以使用數組,例如allObjects.insert({ ... table of init, tick etc functions ...})
。大概你會遍歷所有的對象表來調用每個「對象」的init()或者tick()等。
我認爲上述是基本的方法,希望它激發你找到自己的。
相關問題
- 1. 如何使用Flash遊戲引擎?
- 2. 在遊戲引擎中使用monotouch
- 3. 在C++ iPhone遊戲中使用Objective-C遊戲引擎?
- 4. Html5遊戲引擎
- 5. Android 2D遊戲:我應該使用框架佈局還是遊戲引擎?
- 6. 磚塊遊戲的JavaScript遊戲引擎
- 7. 使用python腳本的遊戲引擎?
- 8. 遊戲引擎與Eclipse使用API 14
- 9. 開發一款不使用遊戲引擎的簡單遊戲?
- 10. 的Android 2D遊戲開發使用Unity遊戲引擎
- 11. 如何組織遊戲引擎
- 12. 2D遊戲引擎如何組織遊戲對象?
- 13. 如何鏈接遊戲引擎和Android遊戲?
- 14. 適用Delphi的任何遊戲引擎?
- 15. Unity遊戲引擎教程?
- 16. OS X遊戲引擎
- 17. C++ 3D遊戲引擎
- 18. FlatRedBall XNA遊戲引擎
- 19. iOS遊戲引擎選擇
- 20. Android NDK遊戲引擎
- 21. Windows Phone 7遊戲引擎?
- 22. 如何在遊戲框架中應用全局過濾器
- 23. 如何使用jint與XNA構建遊戲引擎?
- 24. 遊戲引擎vs圖形引擎vs渲染引擎
- 25. 如何使引擎改變Python中當前的遊戲區域?
- 26. 使用Unity遊戲引擎可以在Linux上開發遊戲嗎?
- 27. 關於在CoffeeScript遊戲引擎中使用mixins
- 28. 使用Lua在C++遊戲引擎中定義NPC行爲
- 29. 在jMokey遊戲引擎中使用對象動畫(函數)?
- 30. 在3D(遊戲)引擎編程中使用的數學
完美,這正是我所需要的。一個非常簡單的解決方案,我很驚訝,我甚至沒有想到這一點。 – Brett