2

XNA でゲームを実行しています。メニューとダイアログを作成するために、Windows フォームを使用しています。私の主な問題 - ただし、「ゲーム オーバー」ダイアログにあります。

死ぬと、もう一度やり直すかどうかを尋ねるメッセージが表示されます。実行すると、xna の別のインスタンスが開きます (つまり、2 つのインスタンスが実行されます)。

[再試行] を選択すると、最初の 1 つを閉じて 2 つ目を開きます。

XNA Game1.cs

GameOver gameover = new GameOver(level, levelManager, kills);
                gameover.ShowDialog();
                this.Exit();

「GameOver」は、ゲーム オーバーの統計を表示する Windows フォームの名前です。(これは、ユーザーがいるレベルを取得し、そのレベルでゲームを開始します)

GameOver.cs (Windows 形式)

    private void button1_Click(object sender, EventArgs e)
{
    Visible = false;
    Thread thread = new Thread(() =>
    {
        Game1 game = new Game1(level);
        game.Run();
    });
    thread.Start();
    thread.Join();
}

どんな助けでも大歓迎です。

4

1 に答える 1

1

全体を要約すると、ゲーム ウィンドウをリセットするリセット メソッドを作成する必要があります。コントラクターのすべてのコードを取得して別のメソッドに配置し、コンストラクターとリセット メソッドでそのメソッドを呼び出すことで、これを行うことができます。リセットから何も残さないようにしてください。初期化が必要なメンバーまたは接続。

新しいウィンドウを開いて現在のウィンドウを閉じることもできますが、それは正しい方法ではありません

于 2013-07-10T13:57:12.413 に答える