0

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;
                }



        }

これを防ぐ方法はありますか?状態を変更して新しい画面に移動する前に、前の画面からボタンをクリアする方法はありますか?

これに関する助けをいただければ幸いです。

4

1 に答える 1

0

設定方法によって異なります。これを行う1つの方法は、GraphicsDevice.Clear(Color.Black);を使用することです。これにより、描画できる黒い画面が残ります。別の方法は、複数のクラスを作成し、それが変更されたときにGameStatesが特定のクラスから描画をロードするようにすることです。これにより、その1つのクラスにあるものだけが描画されます。

于 2013-05-25T01:13:04.193 に答える