이번 강좌에서는 정말로 쉽게 구현할 수가 있지만, 어찌할 방법을 몰라서 발만 동동 구르는 게임 일시 정지 기능에 대해 다루겠습니다.
여러분은 강좌를 보기 전에 서피스를 먼저 배워두시는 편이 좋습니다.
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 이벤트입니다.
이 이벤트에서는 서피스를 화면에 그립니다.
저 같은 경우는 게임이 일시 정지되었을 경우 블렌드모드로 화면에 약간의 변화를 줬습니다.
여러분들은 여러분들의 스타일대로 일시 정지 화면을 처리하시면 됩니다.