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