call_later 함수 설명 및 활용 예제
call_later
함수는 지정된 시간 후 또는 특정 간격 후에 콜백 함수를 호출하는 기능을 제공합니다. 이 함수는 Time Source
를 생성하여 작동합니다. 이 Time Source
는 더 이상 필요하지 않을 때 GameMaker가 자동으로 메모리에서 제거하므로, 사용자가 직접 정리할 필요는 없습니다. 콜백 함수를 취소하려면 call_cancel
함수를 사용하면 됩니다.
중요 사항
- 이 함수는 실제
Time Source
를 반환하지만,call_later
와call_cancel
에서 사용하는Time Source
는 "보이지 않는" 상태이므로 다른 시간 소스 함수와 함께 사용할 수 없습니다. - 이들은
debug_event("ResourceCounts")
로 반환되는 시간 소스 수에 포함됩니다.
함수 인자 설명
인자명 | 타입 | 설명 |
---|---|---|
period | Real | Time Source 가 작동하는 기간 (초 또는 프레임 단위) |
unit | Time Source Unit Constant | 주어진 기간의 단위 |
callback | Method or Script Function | 지정된 시간이 지나면 호출될 메서드 또는 스크립트 함수 |
loop | Boolean (선택 사항) | Time Source 를 반복할지 여부 (기본값은 false) |
문법
call_later(period, unit, callback, [loop=false]);
예제
예제 1: 5초 후 디버그 메시지 출력
var _callback = function() {
show_debug_message("다섯 초가 지났습니다!");
}
var _handle = call_later(5, time_source_units_seconds, _callback);
이 예제에서는 5초가 지난 후 디버그 메시지를 출력하는 콜백 함수를 생성합니다. 이후 기본 Time Source
는 파괴됩니다.
예제 2: 10초마다 적 생성
var _create_enemy = function() {
var _x = random(room_width);
var _y = random(room_height);
instance_create_depth(_x, _y, depth, obj_enemy);
}
var _handle = call_later(10, time_source_units_seconds, _create_enemy, true);
이 예제에서는 방의 랜덤 위치에 새로운 적을 생성하는 콜백 함수를 만듭니다. 이 함수는 call_later
에 전달되어 10초마다 실행됩니다. 마지막 인자는 true
로 설정되어 있어 함수가 계속해서 10초마다 호출됩니다.
활용 예제
예제 3: 게임 오버 후 3초 후 메인 메뉴로 돌아가기
var _return_to_menu = function() {
room_goto(rm_main_menu);
}
var _handle = call_later(3, time_source_units_seconds, _return_to_menu);
예제 4: 특정 시간 후 효과음 재생
var _play_sound = function() {
audio_play_sound(snd_effect, 1, false);
}
var _handle = call_later(2, time_source_units_seconds, _play_sound);
예제 5: 1초마다 점수 증가
var _increase_score = function() {
score += 10;
}
var _handle = call_later(1, time_source_units_seconds, _increase_score, true);
이와 같이 call_later
함수를 활용하여 다양한 게임 로직을 구현할 수 있습니다.