시간 소스 (Time Sources)
"시간 소스"는 사용자가 생성하는 커스텀 타이머입니다. 특정 시간 동안 실행되며, 시간이 만료되면 종료됩니다. 시간 소스는 만료 시 커스텀 메서드(콜백)를 호출할 수 있는 기능이 있습니다. 또한, 특정 횟수만큼 반복하거나 무한히 반복할 수 있습니다. 각 반복을 "rep"이라고 부릅니다.
시간 소스 사용 방법
- 시간 소스 생성 및 시작하기
time_source_create()
함수를 호출하여 시간 소스를 생성합니다.- 글로벌 시간 소스, 게임 시간 소스 또는 커스텀 시간 소스 중에서 상속 여부를 지정합니다.
- 실행할 기간과 단위(초 또는 프레임)를 설정합니다.
- 호출할 커스텀 메서드나 스크립트 함수를 지정하고, 해당 메서드에 전달할 인수 배열을 설정합니다.
- 선택적으로 반복 횟수를 지정합니다. 기본적으로 한 번만 실행됩니다.
time_source_start()
함수를 호출하여 시간 소스를 즉시 시작하거나 나중에 시작할 수 있습니다.- 시간 소스 제거하기
- 더 이상 필요하지 않은 경우
time_source_destroy
를 사용하여 메모리에서 제거합니다.
시간 소스는 언제든지 만료될 수 있지만, GameMaker는 시간 소스가 업데이트/틱(tick)될 때만 이를 인식합니다. 이는 모든 시간 소스에 대해 Begin Step과 Step 이벤트 사이에서 발생합니다. 이 시점에서 만료되었거나 만료될 예정인 시간 소스의 콜백 함수도 실행됩니다.
내장 시간 소스
시간 소스는 두 가지 내장 시간 소스 중 하나 또는 커스텀 시간 소스에서 상속받을 수 있습니다.
간단한 타이머
시간 소스를 설정하는 데 많은 코드가 필요하지 않지만, 단일 함수로 타이머를 빠르게 설정하고 관리하는 것이 편리할 수 있습니다. 다음 두 함수는 시간 소스를 생성하고 중지하는 더 간단한 방법을 제공합니다:
call_later
call_cancel
주의: 이 함수들로 사용되는 시간 소스 ID와 함께 시간 소스 함수를 사용할 수 없습니다. call_later
에 대한 자세한 내용을 참조하세요.
함수 목록
다음 함수들은 시간 소스를 생성하고 수정하는 데 사용됩니다:
함수 이름 | 설명 |
---|---|
time_source_create |
시간 소스 생성 |
time_source_destroy |
시간 소스 제거 |
time_source_start |
시간 소스 시작 |
time_source_stop |
시간 소스 중지 |
time_source_pause |
시간 소스 일시 정지 |
time_source_resume |
시간 소스 재개 |
time_source_reconfigure |
시간 소스 재구성 |
time_source_reset |
시간 소스 초기화 |
time_source_get_children |
자식 시간 소스 가져오기 |
time_source_get_parent |
부모 시간 소스 가져오기 |
time_source_get_period |
실행 기간 가져오기 |
time_source_get_reps_completed |
완료된 반복 횟수 가져오기 |
time_source_get_reps_remaining |
남은 반복 횟수 가져오기 |
time_source_get_state |
시간 소스 상태 가져오기 |
time_source_get_time_remaining |
남은 시간 가져오기 |
time_source_get_units |
단위 가져오기 |
time_source_exists |
시간 소스 존재 여부 확인 |
각 get_*
함수는 지정된 시간 소스가 존재하지 않을 경우 undefined
를 반환합니다.
시간 기간 변환 도우미 함수
다음은 시간 기간을 변환하는 데 제공되는 도우미 함수입니다:
time_seconds_to_bpm
time_bpm_to_seconds
상수
다음 상수는 시간 소스 함수와 함께 사용됩니다:
- 내장 시간 소스
- 시간 소스 단위
- 시간 소스 만료 유형
- 시간 소스 상태
활용 예제
예제 1: 기본 시간 소스 생성 및 시작
var my_timer = time_source_create();
time_source_start(my_timer);
예제 2: 커스텀 메서드와 함께 시간 소스 사용
function my_callback() {
show_message("타이머가 만료되었습니다!");
}
var my_timer = time_source_create();
time_source_start(my_timer, my_callback);
예제 3: 반복 실행하는 시간 소스
var my_timer = time_source_create();
time_source_set_reps(my_timer, 5); // 5회 반복
time_source_start(my_timer);
예제 4: 시간 소스 중지 및 제거
time_source_stop(my_timer);
time_source_destroy(my_timer);
예제 5: 남은 시간 확인
var remaining_time = time_source_get_time_remaining(my_timer);
show_message("남은 시간: " + string(remaining_time));
이와 같은 방식으로 시간 소스를 활용하여 다양한 타이머 기능을 구현할 수 있습니다.