所以我來自傳統的遊戲開發,使用面向對象的原則,從我看到你可以模仿使用LUA一旦你知道你在做什麼。在一些代碼貼子中,我發現如何使用導演類並創建具有新()功能的文件等。電暈LUA和OOP設計
我正在尋找的是管理我的武器的方法。我有一個球員和一個對手,我寧願有一個武器類,比如weaponCanon。我所做的是:
-- private vars here
local power
local canonSprite
local whatever
local someFunction = function()
...
end
-- Private stuff here
local weaponCanon = {}
weaponCanon.fire = function(atX, atY)
...
end
weaponCanon.reset = function()
...
end
return weaponCanon
然後在我的級別代碼中,我簡單地做:
local weaponCanon = require("weaponCanon")
weaponCanon.fire(100, 100)
此編碼了當的偉大工程,允許我使用「私有」和「公共」的心態我武器。問題是,如果我想要的球員,對手有一個佳能:
local playerWeapon = require("weaponCanon")
local opponentWeapon = require("weaponCanon")
這只是返回相同的對象,而不是一個新的實例到該對象。所以我只能在對手的武器位置獲得一件武器。這顯然現在是我想要/需要的。
我們的遊戲中有很多武器,如果只有一個版本的每個文件都有一個設置,告訴我們它是對手的武器還是玩家武器,那就太好了。另一種方法是複製每個文件並創建一個weaponPlayerCanon和一個weaponOpponentCanon,但是我擔心修改一個文件並不得不每次更改2+文件。
我該如何讓它返回一個實例以及LUA文件的結構是什麼?
感謝或任何和所有幫助
-d
我很清楚:http://lua-users.org/wiki/LuaModuleFunctionCritiqued,這是我得到我的設計,但它並不真正解決我的問題,除非我忽略了一些東西.. – 2011-06-14 14:54:01
我想你錯過了你需要的數據和邏輯。所以你需要一個新的功能來提供「表格」來包含你的武器的設置,然後你可以提供這個設置作爲火力函數的參數,所以它減少了槍械表格的功率值。 PIL的第15章應該讓你朝着正確的方向http://www.lua.org/pil/15.html – 2011-06-14 15:11:05
你在這裏所做的是告訴我一些我最終想要測試的東西,所以謝謝你救了我麻煩。 – jhocking 2011-06-15 11:42:19