我正在爲我的遊戲主菜單編寫一個複雜的GUI。我已經用它自己的構造函數創建了一個ButtonGUI
類,其中包含按鈕文本,文本顏色等參數。我在每個按鈕的文本後面都繪製了一個背景紋理,使其看起來很漂亮。所以,我實現了一個簡單的鼠標輸入系統:C#Monogame - 檢測鼠標暫停
void DetectBtnInput(ButtonGUI btn)
{
if (mouseRect.Intersects(btn.SourceRect))
{
btn.IsHovered = true;
if (mouseState.LeftButton == ButtonState.Pressed) settingsWindow.isOpen = true;
}
}
這種方法被稱爲Update(GameTime gameTime)
爲ButtonGUI
類的每個實例。所以mouseRect = new Rectangle(mouseState.X, mouseState.Y, 1, 1);
ButtonGUI
類的每個實例都有一個Rectangle SourceRect
屬性,它等於傳遞給構造函數的按鈕的位置(顯然,按鈕的大小每次都是相同的)。上述代碼背後的邏輯很簡單,如果鼠標懸停在按鈕實例SourceRect
,btn.IsHovered
設置爲true,它會更改文本顏色。點擊後,我的WindowGUI
類實例將打開並顯示其他設置。
所以我的目標是使這些按鈕看起來不錯,並有Windows風格的按鈕機制。所以我正在尋找一個代碼來檢查鼠標持有事件,並且例如有一個bool
,它改變了按鈕紋理或者我自己可以做的任何事情。但問題是,我試圖合併人們給出的關於previousMouseState
和newMouseState
的解決方案,但我不確定它在Monogame中的工作方式與XNA中的工作方式一樣......或者是我的實現錯誤?我可以更清楚地瞭解如何在遊戲中處理鼠標保持功能嗎?提前致謝!
如果不顯示它,我們如何判斷您的實現是否是錯誤的?告訴我們你試過的東西。 – tzachs