Во-первых, я должен использовать формы windows. Я знаю, что это плохо для создания игр, но для школы.
Я разработал меню паузы для своей игры, используя панель с кнопками на ней. Вот код, когда я нажимаю escape, чтобы открыть меню паузы.
private void Game_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
if (paused == true)
{
paused = false;
pnlPaused.Visible = false;
tmrAnimations.Start();
tmrGame.Start();
tmrJump.Start();
tmrPlayerMovement.Start();
tmrLeftMovement.Start();
tmrRightMovement.Start();
}
else
{
pnlPaused.BringToFront();
pnlPaused.Visible = true;
pnlPaused.BackColor = Color.FromArgb(80, 79, 249, 249);
paused = true;
tmrAnimations.Stop();
tmrGame.Stop();
tmrJump.Stop();
tmrPlayerMovement.Stop();
tmrLeftMovement.Stop();
tmrRightMovement.Stop();
}
}
}
Этот код работает нормально, пока я не нажму одну из кнопок. При нажатии любой кнопки, даже если она не содержит кода, невозможно нажать escape, чтобы снова возобновить паузу. С этой кнопкой возобновления запускаются все таймеры, и игра снова начинает работать, но форма не регистрирует нажатия клавиш.
private void btnResume_Click(object sender, EventArgs e)
{
paused = false;
pnlPaused.Visible = false;
tmrAnimations.Start();
tmrGame.Start();
tmrJump.Start();
tmrPlayerMovement.Start();
tmrLeftMovement.Start();
tmrRightMovement.Start();
}
Я попытался добавить этот код в код нажатия кнопки
pnlPaused.Enabled = false;
Этот код работает для повторного включения пользовательского ввода, но каждый раз, когда нажимается клавиша, воспроизводится звук ошибки windows, тот, когда вам нужно отклонить предупреждение и c, но попробуйте отключить (надеюсь, это имеет смысл ). Кто-нибудь знает другой способ исправить то, что панель все еще активна после скрытия или предотвращения звука windows?