Я хочу иметь класс, который предназначен для управления кнопками в моей игре. До сих пор у меня есть следующий код:C# Monogame - Изменить цвет оттенка при зависании
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);
Но что-то пошло не так ... Когда я проверить игру, и я парить на кнопку это не меняет его цвет от синего кустарника до желтого, но по-прежнему меняет состояние игры, когда я нажимаю на нее. Я чувствую, что это какая-то простая инициализация, которую я пропускаю, поэтому я прошу вас о помощи. Любые примеры кода/подходы, объясняемые, были бы замечательными.
EDIT:
Via свойства, как это?
public Color Colour
{
public get { return colour; }
private set { colour = value; }
}
Но меняется ли использование? Могу ли я передать цвет в конструктор и изменить его в Update()
?
Где buttonArea_1 инициализируются? –
Кроме того, изменение цвета переменной не влияет на кнопку. Вам нужно выставить цвет кнопки как свойство через get/set –
Вы можете обновить его с помощью btn1.Colour –