여러 가지 방법으로 수행 할 수 있습니다. 경우, F1
각 업데이트에 누를 된 경우 위의 코드를 검사 할
// TODO: Add your update logic here
if (Keyboard.GetState().IsKeyDown(Keys.F1))
{
Form1 form1 = new Form1();
form1.ShowDialog();
}
:이 처리하는 명백한 장소는 게임의 Update
방법에 (상용구 코드가 당신을 위해 잎 TODO 주석을 참고) 그래서 양식을 만들고 보여줍니다. 이 양식을 사용하여 설정 등을 수정하는 것이 좋을 것 같아 여기에 ShowDialog
을 사용 했으므로 맨 위에 남기를 원합니다.
이제 위의 코드를 사용하면 XNA 게임의 Update
메서드가 계속 호출되어 문제를 빠르게 찾을 수 있습니다. 키를 빠르게 누르기 만해도 몇 개의 새 창을 만들고 결과를 보여주기 때문에 양식에 인터 로킹 입력 방법을 구현해야합니다. 이 작업을 쉽게 수행하는 방법은 Game1.cs
private bool isForm1Open = false;
에 다음 Update
방법에 부울을 선언하는 것입니다 :
는
if (Keyboard.GetState().IsKeyDown(Keys.F1) && (!isForm1Open))
{
isForm1Open = true;
Form1 form1 = new Form1();
form1.FormClosed += new System.Windows.Forms.FormClosedEventHandler(
(s, e) => { isForm1Open = false; });
form1.ShowDialog();
}
이 닫힐 때 isForm1Open
을 다시 form1
에 익명의 이벤트 핸들러를 연결합니다. 이렇게하면 양식을 한 번만 열 수 있습니다. 어쨌든, 양식을 보여주는 것은 당신이 보통하는 것처럼 동일합니다 - 새로운 것을 만들고 보여줍니다. 물론 이것을 처리하는 다른 방법이 있습니다. Form1
을 싱글 톤 클래스로 구현하거나 메모리에 복사본을 유지하고 대신 show/hide를 사용할 수 있습니다. 이것은이 양식에 대해 귀하가 염두에두고 가지고있는 것과 그것이 어떻게 작동 할 것인지에 달려 있습니다.
아무 것도 추가하지 않은 상태로 새 XNA 게임에 대한 빈 상용구 코드를 게시했습니다. 당신은 당신이하려고하는 것을 설명하기 위해 다시 시도해야 할 것입니다. XNA 게임에는 폼이 없습니다 - WinForms 프로젝트에는 폼이 있습니다. XNA를 사용하여 WinForms 응용 프로그램의 스플래시 화면을 만들려고한다는 말입니까? 당신이 시도한 것과 당신의 문제가 무엇인지는 명확하지 않습니다. –
@J ... 설명을 듣고 유감스럽게 생각합니다. 이제 문제를 해결했습니다. –
좋습니다! 그게 훨씬 더 분명합니다. –