2014-10-08 97 views
-2

我的問題比標題更復雜一點: 我有一個GUIController類,它控制着GUI,我想創建一個遊戲內購買菜單。在這個菜單中,我可以選擇武器,如果我有足夠的錢,我可以購買它們。我必須訪問他們的數據,如價格,描述或名稱。如何訪問繼承自monobehaviour的類

問題:
- 要訪問他們的數據,我必須從類中實例化一個對象(啓動函數必須在訪問數據之前運行)。
- 主Weapon類是從MonoBehaviour繼承的,所以我無法從類中實例化對象。

可能的解決方案:
- 我可以實例化一個包含類作爲腳本組件的遊戲對象,然後我可以訪問它的數據。我認爲這不是一個好的解決方案。

問題:
我應該在其他地方存儲信息嗎?在本地數據庫或東西?我認爲在課堂上存儲信息是一個好主意,但我不再那麼肯定。

謝謝您提前給出答案!

+0

你可以顯示類結構..? – MethodMan 2014-10-08 15:15:06

回答

0

編輯:鑑於你的類層次結構靜態變量的建議顯然不會工作。編輯以提供另一種可能的解決方案。

您可以爲Weapon屬性創建一個新類,併爲每種武器類型創建它的實例。這些可以從代碼,數據庫,配置文件等填充。在構建特定Weapon的實例時,您可以爲其提供屬性對象並跨所有屬性的值進行復制。這可以通過使用反射來完成,以避免您必須爲每個屬性編寫作業。

武器屬性對象可以通過多種方式製作和訪問。一個建議是有一個存儲庫可以用來獲取對象的引用(如果它們是單例)或返回一個新的。順便說一下,這是一個相當廣泛的問題,「正確的」答案可能取決於您有多少數據以及您打算如何使用它,或者可能是最佳實踐的問題。因此,它可能更適合於programmers.stackexchange.comgamedev.stackexchange.com

+0

類層次結構如下所示:http://i.imgur.com/t9BRHsr.jpg 例如,我在USP類的Start函數中設置價格。由於Price成員是在Weapon類中聲明的,我不能將其設置爲靜態。 – ithuriel89 2014-10-08 17:37:02