你如何做到這一點,所以遊戲可以退出,但沒有在主類中的代碼,讓它在不同的類中?XNA - 如何從主類以外的類中退出遊戲?
回答
您可以創建一個方法:
//Inside of game1.cs
public void Quit()
{
this.Exit()
}
我假設你想退出遊戲在菜單組件上,在這種情況下,您需要將game1的實例傳遞給組件,或許將其作爲參數添加到菜單組件更新方法中。
public void Update(GameTime gameTime, Game1 game)
{
if(key is pressed)
{
game.Quit();
}
}
我不知道是否有任何其他的方式......也許尋找一種方法來「強制」關閉按鈕按下。
爲了發送game1.cs實例:
//in game1.cs
//in your update method
public void Update(GameTime gameTime)
{
//sends the current game instance to the other classes update method, where
// quit might be called.
otherClass.Update(gameTime, this);
//where 'this' is the actual keyword 'this'. It should be left as 'this'
}
你可以告訴XNA引擎立即關閉這樣的:
Game.Exit();
這將立即退出遊戲。請注意,我說Game.Exit()
- 遊戲應該是你的遊戲實例。如果你是一個實現Game
類中的編碼,你可以簡單地做到以下幾點:
Exit()
我得到這個錯誤,我不知道如何解決它; 「非靜態字段,方法或屬性需要對象引用'Microsoft.Xna.Framework.Game.Exit()'」 – TheQuantumBros
遊戲實際上並不是靜態的,我一開始就錯了。你的項目中的某些東西應該擴展遊戲,或者你正在創建一個新的遊戲。無論哪裏,只要使用myGame.Exit()(其中myGame是Game的實例)。 –
在遊戲主類(Game1
默認情況下)使用全局變量:
public static Boolean exitgame = false;
在更新的Game1常規:
protected override void Update(GameTime gameTime)
{
SomeOtherClass.Update(gameTime);
if (exitgame) this.Exit();
base.Update(gameTime);
}
你也可以使用一種單例模式,在你的主遊戲類中您可以定義該類的類型的靜態變量。當您構建或初始化該類時,您隨後將該變量設置爲this
,使您可以在任何地方輕鬆訪問該類實例。
public class Game1 : Microsoft.Xna.Framework.Game
{
public static Game1 self;
public Game1()
{
self = this;
//... other setup stuff ...
}
//... other code ...
}
然後,當你想從代碼幾乎任何地方調用這個類中的方法,你會簡單地做:
Game1.self.Exit(); //Replace Exit with any method
這個工作過程應該只有通常是單個Game
類存在。當然,如果你想以某種方式獲得多個類,這種方法將不會有效。
我喜歡這個解決方案:) – Ataraxia
- 1. 退出Windows Phone 8中的XNA遊戲
- 2. 在Xna的「遊戲」類以外使用資源
- 3. glfwErrorCallback在主遊戲類中?
- 4. Java遊戲引擎,類似於XNA
- 5. Windows Phone - XNA遊戲 - 後退按鈕
- 6. 在XNA之外加載3D模型遊戲類
- 7. XNA/MonoGame出版的遊戲,不能加載SpriteFont類爲
- 8. XNA 4.0遊戲類每秒能更新60次以上嗎?
- 9. 退出或退出遊戲在Andengine
- 10. XNA遊戲並沒有叫Game.Exit後退出()
- 11. 使用帶有XNA(Windows)遊戲項目的XNA(Windows)遊戲庫
- 12. XNA遊戲組件
- 13. XNA遊戲性能
- 14. 鼠標XNA遊戲
- 15. XNA遊戲凍結
- 16. XNA遊戲教程
- 17. C#XNA無遊戲網絡遊戲
- 18. 非XNA遊戲進入遊戲?
- 19. 在XNA遊戲中progressBar
- 20. 使用泛型訪問XNA遊戲中的類
- 21. 在XNA中創建一個小寵物類型的遊戲?
- 22. 如何在我的XNA遊戲中實現類似OnExit的方法?
- 23. 如何從遊戲循環之外給出Pong遊戲的指示?
- 24. 使用python從主類以外的類打印輸出?
- 25. XNA遊戲如何製作蛇尾
- 26. C#XNA的Javascript(或類似的)遊戲腳本
- 27. 類型「System.NullReferenceException」爲XNA遊戲未處理的異常
- 28. 如何讓我的XNA遊戲可以玩?
- 29. 如何在XNA遊戲中獲得IBeam遊標?
- 30. 暫停或退出的的Android遊戲
'Microsoft.Xna.Framework.Game'不包含'Quit'的定義,並且沒有可以找到接受'Microsoft.Xna.Framework.Game'類型的第一個參數的擴展方法'Quit'(你是否遺漏了使用指令或程序集引用?) – TheQuantumBros
我認爲你仍然試圖錯誤地使用它。確保你在調用遊戲,實例,而不是遊戲,這個類。 Quit是我編寫的一個包含this.Exit()和this.Exit()的方法,它關閉了頁面。請注意,上面顯示的更新方法是在非game1類中的,並且一個新參數正在傳遞給更新方法(遊戲遊戲),而之前沒有這個方法。 – Colton
我想通了,它是爲了Game1遊戲而不是遊戲遊戲,但是當我調試它時說這個;你調用的對象是空的。並突出顯示game.Quit(); – TheQuantumBros