GAME MAKER 강좌
KAYAN
◈ 룸 재시작
아래 함수를 사용하면 룸에 새로 들어온 것처럼 현재 룸을 다시 시작합니다.
◎ room_restart( )
다만, 현재 룸에서 변경된 전역변수, 데이터 구조체, 스프라이트와 같은 동적 리소스들은 직접 재설정하는 것이 아니라면, 자동으로 초기화되지는 않습니다.
즉, 룸 초기에 설정된 오브젝트 및 스프라이트 리소스 배치, 오브젝트의 초기 설정 및 지역 변수값, 기본 룸 설정정도만 초기화 됩니다.
함수를 사용하면 [Room End 이벤트]가 실행되고 룸을 재시작하게 됩니다.
if lives < 1 { room_restart( ); } |
위의 코드는 변수 "lives"가 1보다 작은지 확인하고 1보다 작은 경우 룸을 다시 시작합니다.
(▲ 룸 매니저)
◈ 게임 재시작
아래 함수를 사용하면 게임을 다시 시작할 수 있습니다.
◎ game_restart( )
이것은 본질적으로 게임을 처음 실행하는 것과 같기 때문에 현재 룸에서는 [게임 종료 이벤트]가 실행되고,
첫 번째 룸에서는 [게임 시작 이벤트]가 실행됩니다.
이 함수가 호출될 때 특정 설정은 재설정되지 않는다는 점을 주의해야 합니다.
- 전역 변수는 명시적으로 코딩되지 않는 한, 자동으로 초기화되지는 않습니다.
예를 들어, 내장 전역 변수의 점수(score 변수)는 게임에서 수정된 경우 게임을 다시 시작해도 0에서 시작하지 않습니다.
- GPU 상태는 변경되지 않습니다.
예를 들어, 그리기 색상(draw_set_color), 또는, 투명도(draw_set_alpha)를 설정한 경우 변경된 값으로 유지됩니다.
- 게임 속도는 게임 코드에서 설정한 대로 유지됩니다. 변경한 경우 이 변경 사항은 지속됩니다.
- 스프라이트 리소스의 원점을 변경하거나 리소스의 위치를 이동하는 경우와 같이, 게임 내에서 에셋 브라우저의
변경된 모든 에셋들은 재설정되지 않습니다.
- 버퍼, 서피스, 데이터 구조체 또는 외부에서 가져온 스프라이트와 같이 동적 리소스는 정리되거나 제거되지 않습니다
그들에 대한 참조를 잃을 수도 있으므로, 이 함수를 사용할 때 동적 리소스의 참조에 관한 부분을 정리하는 것이 좋습니다.
if keyboard_check_pressed(ord("R")) { game_restart( ); } |
예시는 플레이어가 "R" 키를 누르면 게임이 다시 시작됩니다.
◈ 게임 종료하기
아래 함수는 게임을 종료할 수 있습니다.
◎ game_end( )
함수를 사용하면 [게임 종료 이벤트]가 실행됩니다.
이 기능을 사용할 때 주의할 부분이 있습니다.
- Android 기기에서 game_end( )를 호출하면 앱이 백그라운드로 푸시되지만 앱이 완전히 닫히지는 않습니다.
이 작업은 사용자가 직접 기기에서 수행하도록해야 합니다.
- iOS에서는 아무 작업도 수행하지 않고, 자동으로 실패합니다.
- 모든 콘솔에서 게임이 충돌하거나 소리 없이 실패할 수 있으므로, 이 기능을 사용해서는 안 됩니다.
- HTML5에서는 게임은 종료되지만, 사용자는 웹 페이지의 빈 캔버스를 볼 수 있기 때문에 해당 대상 플랫폼에서
사용하지 않는 것이 좋습니다.
- Windows, Linux 및 macOS에서는 함수는 게임을 종료하고, 게임 창을 닫습니다.
if keyboard_check_pressed(vk_escape) { game_end( ); } |
예시는 플레이어가 "ESC" 키를 누르면 게임이 종료(Windows, Linux 및 macOS 에서만 작동)됩니다.
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커 강좌-기초][GMS2]3D에서의 목표물 거리와 방향측정 (3) | 2023.07.12 |
---|---|
[게임메이커 강좌-기초][GMS2]목표물 방향과 거리측정 (0) | 2023.07.12 |
[게임메이커 강좌-기초][GMS2]게임에서 룸 이동 (0) | 2023.07.11 |
[게임메이커 강좌-기초][GMS2]룸 순서 변경 (0) | 2023.07.11 |
[게임메이커 강좌-기초][GMS2] 다중 충돌 체크 - 충돌 인스턴스 목록화 (0) | 2023.02.15 |
댓글