2013-07-10 3 views
2

У меня есть игра, работающая в XNA. Для создания меню и диалогов я использую окна. Моя основная проблема - однако, это мой диалог «Игра над».Закрытие XNA из Windows Forms

Когда вы умираете, появляется сообщение с вопросом, хотите ли вы повторить попытку. Когда вы это сделаете - он открывает еще один экземпляр xna (так что у вас есть два бега).

Когда вы выберете «Попробовать снова», я бы хотел, чтобы первый закроет и откроем второй.

XNA Game1.cs

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

'GameOver' имя формы окна, который отображает игру по статистике. (Это занимает уровень, что пользователь находится на и начинает игру на этом уровне)

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

Любая помощь очень ценится.

+1

Почему вы не начать новый раунд в том же окне? Я думаю, что это будет ожидаемое поведение. – Lucius

+0

также, в чем проблема закрытия последнего окна? add Dispose() в конце button1_Click –

+0

@ lucius Извините, если это кажется основным ... но как бы я это сделал? – user1662290

ответ

1

Я подведу итог всему: Вам необходимо написать способ сброса, который сбросит игровое окно. вы можете сделать это, взяв весь код подрядчика и поместив их в другой метод, и вызовите этот метод в конструкторе и в методе сброса. убедитесь, что вы ничего не оставили без сброса. любой член или соединение, которые необходимо инициализировать.

вы также можете открыть новое окно и закрыть текущую, но это не правильный способ делать вещи

+0

Ах отлично! Nice идея. Я создал публичный метод, называемый 'reset' в Game1, который вызвал методы Initlialise и Load. Затем я назвал это из оконных форм, и он полностью сбрасывает все. Благодаря! – user1662290

Смежные вопросы