프로그래밍 강의/게임메이커 스튜디오

GMS, 게임 일시 정지 기능을 만들어보자

wnsrn3436 2013. 10. 4. 23:12

 

 

이번 강좌에서는 정말로 쉽게 구현할 수가 있지만, 어찌할 방법을 몰라서 발만 동동 구르는 게임 일시 정지 기능에 대해 다루겠습니다.

여러분은 강좌를 보기 전에 서피스를 먼저 배워두시는 편이 좋습니다.

 

 

Create 이벤트입니다.

위 코드에서 눈여겨보아야 할 것은 'view_surface_id[0] = suf' 부분입니다.

제 서피스강좌를 보신 분들이라면 이게 화면을 서피스로 복사하는 역할을 한다는 것을 알 수가 있을 것입니다.

당연히 view_surface_id[*] 기능을 사용하는 게임 프로젝트는 뷰를 만들어야 하고요.

 

왜 화면을 서피스에 복사하느냐면, 게임이 일시 정지되기 때문입니다.

게임이 일시 정지가 되면, 일시 정지가 되기 전의 게임화면을 그려야 하므로 서피스로 따로 저장해 두는 것이죠.

 

playing_game = true 변수는 게임이 진행 중인지를 저장하는 변수입니다.

 

 

ESC 이벤트입니다.

이 이벤트에서는 룸상의 모든 인스턴스를 '비활성화/활성화' 하는 함수를 사용합니다.

한마디로 일시 정지 기능이란, 룸상의 모든 인스턴스를 비활성화시켜서 게임을 일시 정지시켜버리는 것입니다.

 

게임메이커: 스튜디오(GameMaker: Studio)에서 인스턴스를 '비활성화/활성화' 하는 함수는 아래와 같습니다.

 

instance_deactivate_all

instance_deactivate_object

instance_deactivate_region

instance_activate_all

instance_activate_object

instance_activate_region

 

위 코드에서 보시다시피 instance_deactivate_all(true) 처럼 인자에 true 를 넣으면 함수를 호출한 자기 자신은 비활성화시키지 않는 기능도 제공합니다.

 

 

마지막으로 Draw GUI 이벤트입니다.

이 이벤트에서는 서피스를 화면에 그립니다.

 

저 같은 경우는 게임이 일시 정지되었을 경우 블렌드모드로 화면에 약간의 변화를 줬습니다.

여러분들은 여러분들의 스타일대로 일시 정지 화면을 처리하시면 됩니다.

 

Pause the Game.gmz

 

http://cafe.naver.com/playgm

 

Comments