오디오 재생 종료 이벤트
이 문서는 오디오 재생 종료 이벤트에 대해 설명합니다. 이 이벤트는 audio_play_sound
함수를 사용하여 재생된 사운드 인스턴스의 재생이 끝날 때마다 발생합니다. 다음과 같은 상황에서 재생이 종료됩니다:
- 사운드가 끝나는 위치에 도달했을 때.
audio_pause_sound
를 사용하여 사운드를 일시 정지하거나,audio_sound_set_track_position
으로 트랙 위치를 변경하거나, 오디오 루프 포인트를 변경하여 섹션을 반복하는 경우에는 재생이 끝나지 않습니다.audio_stop_sound
또는audio_stop_all
을 호출하여 사운드를 중지했을 때.- 음성 훔치기(voice stealing)로 인해 사운드가 강제로 중지될 때: 다른 사운드를 재생할 때 모든 채널이 사용 중이면, 우선 순위가 낮은 사운드는 새로운 사운드를 재생하기 위해 강제로 중지됩니다.
이 이벤트는 게임 내에서 재생된 모든 사운드에 대해 발생하며, 같은 객체에서 재생되지 않은 사운드에 대해서도 발생합니다. 이벤트는 async_loadds_map
에서 정보를 반환합니다. 이 맵은 다음과 같은 키를 포함합니다:
키 | 설명 |
---|---|
sound_id | 재생이 종료된 사운드 인스턴스 ID |
asset_id | 사운드 자산의 인덱스 |
was_stopped | 수동으로 중지된 경우에만 true로 설정됨. |
사운드를 일시 정지하는 것은 재생을 종료하지 않으며, 이후에 재생을 재개할 수 있습니다.
예제
사운드를 재생하는 코드는 다음과 같습니다:
ins_snd_bgm = audio_play_sound(snd_music, 100, false);
이 사운드에 대해 다른 사운드 함수를 호출하지 않으면, 사운드는 끝까지 재생됩니다. 이때 Audio Playback Ended
이벤트가 발생하고, async_loadds_map
에는 다음과 같은 값이 포함됩니다:
sound_id
:audio_play_sound
에서 반환된 사운드 ID (여기서는ins_snd_bgm
)asset_id
:snd_music
was_stopped
: false (사운드가 중지되지 않음)
사운드가 끝에 도달하기 전에 중지하면 Audio Playback Ended
이벤트도 발생합니다. 다음과 같은 코드로 중지할 수 있습니다:
// 사운드 인스턴스 중지
audio_stop_sound(ins_snd_bgm);
// 사운드 자산의 모든 인스턴스 중지
audio_stop_sound(snd_relaxed);
// 재생 중인 모든 사운드 중지
audio_stop_all();
이 경우, 사운드는 audio_stop_functions
중 하나를 호출하여 중지되었으므로, was_stopped
는 true로 설정됩니다.
마지막으로, 이 사운드가 재생 중일 때 우선 순위가 높은 추가 사운드를 재생하면, 이 또한 채널을 차지하게 됩니다. 만약 남은 채널이 없다면 ins_snd_bgm
은 강제로 중지될 수 있으며, 이 경우에도 was_stopped
는 true로 설정됩니다.