예전에 작성했던 XNA흐름(링크)은 대충 두리뭉실 했는데, 이번에는 그보다 좀더 들어가보자

미리 XNA 흐름의 포인트를 얘기하자면...
모든 컨텐츠를 로딩할 수 있는 곳은 LoadContent 메서드이고,
이것을 호출하는 곳은 Initialize 메서드 뿐이라는 것이다.

즉, 처음 딱한번 Initialize가 호출된 뒤에는 게임컴포넌트를 추가하더라도 그 컴포넌트의 컨텐츠는 로드되지 않는다는 것이다.

XNA의 논리적 흐름은 아래의 17단계로 나눌 수 있다.

1. Main에서 게임 생성자 호출
2. 게임 생성자는 게임컴포넌트 생성자 호출
3. XNA Framework에서 게임의 Initialize 메서드 호출
4. XNA Framework에서 각각의 게임컴포넌트에 해당하는 Initialize 메서드 호출
5. XNA Framework에서 각각의 Drawable 게임 커모넌트에 해당하는 LoadContent 메서드를 호출.
6. XNA Framework에서 게임의 LoadContect메서드를 호출
* 아래의 7~10단계 무한반복
7. XNA Framework에서 게임의 Update메서드를 호출
8. XNA Framework에서 각각의 게임컴포넌트에 해당하는 Update메서드를 호출
9. XNA Framework에서 게임의 Draw 메서드를 호출
10. XNA Framework에서 각각의 Drawable 게임컴포넌트에 해당하는 Draw 메서드를 호출

11. 장치를 유실할 경우(창의 최소/최대화, 해상도 변경 등) 장치 리셋 처리
     - UnloadContent 메서드 호출후 6단계에서 다시 시작
12. 사용자가 프로그램을 종료
13. XNA Framework에서 게임의 Dispose 메서드 호출
14. 게임의 Dispose 메서드에서 기본 객체의 Dispose 메서드를 호출한다.
15. XNA Framework에서 각각의 게임컴포넌트에 해당하는 Dispose 메서드 호출
16. XNA Framework에서 게임의 UnloadContent 메서드 호출
17. 프로그램의 Dispose 메서드로 focus가 반환되고 결국 프로그램이 종료됨

Google AdSense

+ Recent posts