2013-12-13 6 views
0

좋아, 처음부터 다시 시작할 수 있도록 제대로 말하지 않았을 수 있습니다. (판단하지 마라) 처음부터 시작하자. XNA Game Studio 4.0에서 템플릿을 저장 했으므로 Windows Game (4.0)을 선택했습니다. 나는 프로젝트 이름을 form으로한다.클래스를 구성하는 기본 클래스

IT 부하 : Game1.cs 코드와

The load up of the game

. 이제 양식을 마우스 오른쪽 버튼으로 클릭하고 새 항목을 추가하고 창 양식을 선택하십시오. 나는 Form1.cs 양식의 이름을 짓는다.

는 이제 다음과 같습니다 : I 표시하고 내가 Game1.cs에 무엇을해야하는지 버튼을 클릭 할 경우

The form with a button in the middle of it

: 다음 버튼을 추가

After adding the form what the solution bar look like

Form1.cs에 도착 하시겠습니까?

+4

아무 것도 추가하지 않은 상태로 새 XNA 게임에 대한 빈 상용구 코드를 게시했습니다. 당신은 당신이하려고하는 것을 설명하기 위해 다시 시도해야 할 것입니다. XNA 게임에는 폼이 없습니다 - WinForms 프로젝트에는 폼이 있습니다. XNA를 사용하여 WinForms 응용 프로그램의 스플래시 화면을 만들려고한다는 말입니까? 당신이 시도한 것과 당신의 문제가 무엇인지는 명확하지 않습니다. –

+0

@J ... 설명을 듣고 유감스럽게 생각합니다. 이제 문제를 해결했습니다. –

+0

좋습니다! 그게 훨씬 더 분명합니다. –

답변

0

여러 가지 방법으로 수행 할 수 있습니다. 경우, 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를 사용할 수 있습니다. 이것은이 양식에 대해 귀하가 염두에두고 가지고있는 것과 그것이 어떻게 작동 할 것인지에 달려 있습니다.

+0

C# XNA의 기본 논리를 이해하고 내일 테스트 할 수 있도록 도와 주셔서 감사합니다. 올바른지 확인하기 위해 프로그램에 액세스 할 수 없습니다. –

+0

도움 주셔서 감사합니다 J. –

관련 문제