나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2021-02-27 05:24:30

게임메이커/이벤트

파일:상위 문서 아이콘.svg   상위 문서: 게임메이커
1. Create2. Mouse 3. Destroy 4. Other5. Alarm6. Draw7. Step8. Keyboard, Key Press/Release9. Collision10. Trigger (GM8)11. Asynchronous (GMS)


게임메이커/게임메이커: 스튜디오에서 오브젝트의 이벤트에 대하여 설명한다. 게임메이커 도움말을 확인.

1. Create


인스턴스가 처음 생성 시 작동한다. 변수 초기화, 타임라인 시작, 패스(Path) 설정 등 이 인스턴스가 한 번만 수행해야 하는 일에 사용한다.

이 이벤트가 실행될 때는 인스턴스가 생성된 직후이다. 예를 들어 foo라는 오브젝트의 Create Event에 hp = 80;이라는 코드가 있고 bar 오브젝트에서 instance_create(x, y, foo); foo.hp = 30;이라는 코드를 실행한다면 barinstance_create(x, y, foo);, foohp = 80;, barfoo.hp = 30;의 순서로 실행되어 foohp는 80이 아니라 30이 된다.

2. Mouse


이 이벤트는 여러 하위 이벤트로 분리된다.

iOS, 안드로이드에서 일반 터치는 좌클릭, 더블터치는 우클릭에 대응된다. 이 설정을 끄려면 게임 시작 시 device_mouse_dbclick_enable(false)를 실행시키면 된다. 참고로 이 이벤트로는 모바일(iOS, 안드로이드)에서는 첫번째 터치만을 인식한다. 즉 멀티터치를 이용하려면 device_mouse_* 계열 코드를 이용해야 한다(GMS).

3. Destroy


해당 인스턴스가 파괴될 때 작동한다. 적 오브젝트가 사망 시 점수 추가나 사망 이펙트를 적용하는 데 유용하다.

인스턴스를 삭제하는 코드나 액션(instance_destroy(); 등)을 사용할 때 실행된다. 룸이 바뀌거나 게임이 종료될 때는 실행되지 않는다.[출처]

4. Other

5. Alarm


알람을 설정하면 일정 시간 이후 해당 이벤트가 실행된다. 매 시간마다 무엇을 할 것인지 정하는데 매우 유용하다. 같은 주기로 몬스터를 소환하는 등으로 사용할 수 있다. 0부터 11까지 12종류를 사용할 수 있다.

내부적으로는 기본적으로 제공하는 전역 변수 alarm[n]으로 판정하며, 해당하는 알람 이벤트가 없다면 카운트다운되지 않는다. alarm[n]에는 남은 스텝 수가 저장되며, 0일 경우 이번 스텝에 알람이 울리고, 알람을 설정하지 않았다면 -1이 된다.

6. Draw


여러 가지 하위 이벤트로 나뉜다.
일반 'Draw' 이벤트를 제외한 8종류의 하위 이벤트는 게임메이커: 스튜디오에서만 사용할 수 있다.

7. Step


1스텝(1/room_speed초)마다 작동하는 이벤트이다. 항상 작동하는 이벤트라고 보면 된다. 체력 체크를 하거나 딜레이 설정 등으로 쓰인다.

Draw 이벤트도 매 스텝 작동하지만 이쪽은 여타 이벤트보다 실행 순위가 가장 늦으며 뷰의 활성화 상태에 따라 1스텝당 여러 번 반복하기도 하니 Draw 이벤트는 원래 용도대로 드로우만 하자.
'Step', 'Begin/End Step'의 3가지로 나뉘어 있으며, 실행 순서는 Begin-일반-End이다.

8. Keyboard, Key Press/Release


특정 키가 눌려 있을 때 계속(Keyboard), 혹은 특정 키를 누른 순간(Key Press)이나 뗀 순간(Key Release) 한 번 실행된다. 각각의 82가지로 나뉘어 있다.

9. Collision


특정 오브젝트와 충돌했을 때 계속 실행된다. 이벤트의 특성 때문에 현재 게임에 만들어져 있는 오브젝트의 수만큼의 하위 이벤트로 나뉘어 있다.
이 이벤트 안에서 코드를 쓸 때, other라는 예약어를 사용해서 other.hp와 같이 충돌한 인스턴스를 참조할 수 있다. 다만, other 자체는 상수일 뿐 충돌한 인스턴스 자체를 나타내지는 않기 때문에 충돌한 인스턴스의 id를 참조하려면 other.id와 같이 써야 한다.

10. Trigger (GM8)


구 버전 게임메이커에만 존재한다. GML을 이용하여 직접 실행 조건을 지정할 수 있는 사용자 정의 이벤트.

11. Asynchronous (GMS)


게임메이커: 스튜디오에만 존재한다. 인앱 결제 등 인터넷 환경이 개입되거나 입력과 출력이 시간차를 두고 일어날 경우 사용되는 비동기성 이벤트이다.
'Image Loaded', 'HTTP', 'Dialog', 'IAP', 'Cloud', 'Networking', 'Steam', 'Social', 'Push Notification', 'Save / Load', 'Audio Recording', 'Audio Playback', 'System Event' 등의 13가지로 나뉘어 있다.

GMS의 대화상자 코드의 경우 비동기 함수(show_message_async() 등)와 비동기가 아닌 함수(show_message() 등)로 나뉘어 있으며, 전자는 대화상자가 떠도 게임이 계속 실행되지만 후자는 대화상자를 끌 때까지 게임이 멈춰 있다. 도움말에서는 실제 게임에 전자를 사용하고, 후자는 디버그 용도로만 사용하라고 권고하고 있다. 이는 show_question(), get_integer(), get_string()에도 똑같이 적용된다.

[출처] https://cafe.naver.com/playgm/69477[2] Persistent가 체크된 룸은 다른 룸으로 가도 사라지지 않고 룸 상태를 유지하기 때문. 'Room end' 이벤트도 마찬가지 이유로 실행되지 않는다.