簡體   English   中英

XNA C#-如何在不被按下的情況下按下按鈕

[英]XNA C# - How to make a button pressed without being pressed

我有一個起始圖像,當您按Enter鍵時,它將進入游戲。 問題在於,由於這是圖像,因此必須按住按鈕才能保持顯示游戲屏幕。 有沒有一種方法可以使您按下按鈕后圖像保持不顯示?

Update Method:

helpScreen = new HelpScreen(this); 

if (!helpScreen.gamestarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    helpScreen.gamestarted = true;
}

Draw Method:

if (!helpScreen.gamestarted)
{
    helpScreen.Draw(spriteBatch);
}

將狀態存儲在您的主游戲類中:

private bool gameStarted = false;

在更新方法中,檢查輸入:

if (!gameStarted && Keyboard.GetState().IsKeyDown(Keys.Enter))
{
    gameStarted = true;
}

如果游戲尚未開始,則稍后在draw方法中僅繪制開始圖像:

if (!gameStarted)
{
    helpScreen.Draw(spriteBatch);
}

這樣,一旦玩家按下按鈕,就不會再次繪制它。 還可以使用一般的gameStarted字段來闡明您的意圖,並且可以以簡單自然的方式將其他游戲邏輯基於其狀態。

我可以問一下,您是否對輸入進行了其他編碼? 還是從這個幫助屏幕開始? 因為這涵蓋了輸入處理的基礎知識。

看來您將其視為事件驅動的系統,而實際上這是一個游戲循環。 這意味着您要在每個循環中檢查一個值,並根據該值而不是事件(例如,單擊)來輸出結果

我要做的是記錄上一個值,然后在下一個循環中,將該值與當前值進行比較。 您的Update方法中的示例:

//Outside of Update loop declare
KeyboardState previousState = Keyboard.GetState();

//Inside update loop
if (Keyboard.GetState().IsKeyUp(Keys.Enter) && previousState.IsKeyDown(Keys.Enter))
{
        helpScreen = null;     }

當按下並釋放Enter按鈕時,將觸發此操作。 我將對該代碼執行許多其他更改,但這應為您指出此特定問題的正確方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM