我現在正在製作遊戲一個星期,我希望能夠「重置」遊戲。在應用程序啓動時,使每個變量恢復到其原始值。重置所有變量項目範圍的最佳方法? ---(Java)
是否有任何內置的方法來完成此任務?我大概有20個類和幾百個變量。我可以在每個類中創建一個reset()方法,然後在嘗試重置時調用每個方法。
有沒有比這更簡單的方法呢?
我現在正在製作遊戲一個星期,我希望能夠「重置」遊戲。在應用程序啓動時,使每個變量恢復到其原始值。重置所有變量項目範圍的最佳方法? ---(Java)
是否有任何內置的方法來完成此任務?我大概有20個類和幾百個變量。我可以在每個類中創建一個reset()方法,然後在嘗試重置時調用每個方法。
有沒有比這更簡單的方法呢?
我會這樣做:對於每一個類,初始化所有實例變量,而不是在構造函數中,但是在一個單獨的方法中(如initializeVariables()
),然後從構造函數中調用它。像這樣,您可以隨時使用此方法重置所有變量。當然,你必須分別爲每個班級做到這一點。
是的,這正是我正在談論的事情,只是想知道是否有更快的方法來實現這一點。我想沒有。 –
您可以利用這一事實,即您使用Java編寫遊戲以獲得優勢。如果你想「重置」你的類,你可以只是重新初始化它們像這樣
game.doSomething();
....
game = new Game();
Java將然後採取老遊戲,並使其通過GC,所以基本上你讓你的類的構造函數的reset()
方法(爲什麼它不是?這是建設者的工作)。您還應該重置使用Game
生成的任何其他對象。關於它的巧妙之處在於,當您修改遊戲對象時,您不必「記住」默認值。
如果您的遊戲使用系統資源(SQL連接,FileBuffers等),您當然需要在重置遊戲之前關閉它們。在這種情況下,你可以在你的遊戲中定義一個狀態(沒有視圖),當用戶重置遊戲時將被訪問。
這個'重置狀態'將負責釋放系統資源,並在完成後將用戶轉移到主菜單狀態,您也可以使用此機會保存您想要保留的任何數據。
舊的遊戲仍然會在系統內存中,但是,對嗎?它會收集垃圾嗎?如果不是=空?雖然這將是我認爲的最佳解決方案?遊戲game2 =新遊戲(); game1 = null; –
舊的遊戲對象將被垃圾收集,只要它不被任何東西或項目中的任何其他地方引用。 – svarog
除了在代碼中明確提供重置功能之外,沒有辦法做到這一點。 –
只是重新初始化你的遊戲對象'game = new Game();' – svarog
如果你想讓它變得複雜,可以製作一個自定義註釋,用這個註解標記你的類,用這個註解列出所有的類,使用反射來重置這些類的屬性。 – Kartic