Xnaを使用してC#でゲームを構築しています。メニューとプレイ画面の間でゲームの状態を変更すると、新しい画面が新しい画面の上に描画されているように見えます。画面の前の画面のボタンがあった部分をクリックすると、状態が変わります。レベル1にいて、前の画面のレベル2のボタンがある画面の部分を押すと、レベルに直接ジャンプします。 2.2。
これは最初のメニューボタンクラスからの私のコードです:
class menubutton1
{
public bool selected = false;
public string text = "menuButton";
public Rectangle area;
public menubutton1(Rectangle Area, string Text, int i)
{
area = Area;
text = Text;
i = 4;
}
public void mouseOver(MouseState mbd)
{
//CHECK IF MOUSE IS OVER BUTTON
if (mbd.X > area.X && mbd.X < area.X + area.Width && mbd.Y > area.Y && mbd.Y > area.Y + area.Height)
{
selected = true;
}
else { selected = false; }
}
public void Draw(SpriteBatch spriteBatch, SpriteFont font)
{
if (selected == false)
{
spriteBatch.DrawString(font, text, new Vector2(area.X, area.Y), Color.Black);
}
if (selected == true)
{
spriteBatch.DrawString(font, text, new Vector2(area.X, area.Y), Color.White);
}
}
}
}
これはメインからのコードです:
List<menubutton1> mbs1 = new List<menubutton1>();
これはupdateメソッドによるものです。
foreach (menubutton1 m in mbs1)
{
m.mouseOver(mbd);
//Check if play button has been clicked
if (m.text == "PLAY GAME 1" && m.selected == true && mbd.LeftButton == ButtonState.Pressed && prevmbd.LeftButton == ButtonState.Released)
{
gamestate = gameState.play1;
}
if (m.text == "PLAY GAME 2" && m.selected == true && mbd.LeftButton == ButtonState.Pressed && prevmbd.LeftButton == ButtonState.Released)
{
gamestate = gameState.play2;
}
if (m.text == "PLAY GAME 3" && m.selected == true && mbd.LeftButton == ButtonState.Pressed && prevmbd.LeftButton == ButtonState.Released)
{
gamestate = gameState.play3;
}
}
これを防ぐ方法はありますか?状態を変更して新しい画面に移動する前に、前の画面からボタンをクリアする方法はありますか?
これに関する助けをいただければ幸いです。