簡體   English   中英

C#Monogame-懸停時更改色彩

[英]C# Monogame - Change tint color on hover

我想開設一個旨在管理游戲中按鈕的類。 到目前為止,我有以下代碼:

public class Button
{
    private SpriteFont btnFont;
    private string btnTxt;
    private Vector2 btnPos;
    private Color btnColour;

    public Button(SpriteFont newFont, string newTxt, Vector2 newPos, Color newColour)
    {
        btnFont = newFont;
        btnPos = newPos;
        btnTxt = newTxt;
        btnColour = newColour;
    }

    public void Draw(SpriteBatch spriteBatch)
    {
        spriteBatch.DrawString(btnFont, btnTxt, btnPos, btnColour);
    }
}

以及用法:

private Button btn_1;
private Color colour = new Color.CornflowerBlue;
private Rectangle buttonArea_1 = new Rectangle(24, 300, 192, 39);
// LoadContent() Method:
btn_1 = new Button(Game1.defaultFontBig, "Play Game", new Vector2(24, 300), colour);
// Update() Method:
MouseState mouseState = Mouse.GetState();
Point mousePosition = new Point(mouseState.X, mouseState.Y);
if (buttonArea_1.Contains(mousePosition))
{
    colour = Color.Yellow;
    if (mouseState.LeftButton == ButtonState.Pressed)
    {
        Game1.currentGameState = Game1.gameStates.loadingScreen;
    }
}
else
{
    colour = Color.CornflowerBlue;
}
// Draw Method():
btn_1.Draw(spriteBatch);

但是出了點問題...當我測試游戲時,當我將鼠標懸停在按鈕上時,它的顏色沒有從矢車菊藍色更改為黃色,但是當我單擊它時仍然更改了游戲狀態。 我覺得這是我缺少的一種簡單的初始化操作,因此我需要您的幫助。 解釋的任何代碼示例/方法都很棒。

編輯:

通過這樣的屬性?

public Color Colour
{
    public get { return colour; }
    private set { colour = value; }
}

但是用法會改變嗎? 我是否仍可以將顏色傳遞給構造函數並在Update()更改?

代替:

private Color btnColour;

在按鈕類中,執行以下操作:

public Color btnColour { get; set; }

然后在使用代碼中,而不是這樣:

colour = Color.Yellow;

做這個:

btn_1.colour = Color.Yellow;

和:

btn_1.colour = Color.CornflowerBlue;

暫無
暫無

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

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