GAME MAKER 강좌
KAYAN
◈ 사운드 재생
게임메이커에는 기본적으로 *.ogg, *.mp3 및 *.wav 사운드 형식을 재생할 수 있습니다.
사운드는 기본적으로 아래 함수를 사용하여 재생할 수 있습니다.
◎ audio_play_sound(index, priority, loop) - index : 재생할 사운드의 인덱스입니다. - priority : 사운드의 채널 우선순위를 설정합니다. - loop : 사운드를 루프할지 여부를 설정합니다. true(1) : 루프 재생, false(0) : 한번만 재생 |
사운드 에셋을 제공하고 우선 순위를 지정하면 재생되는 사운드 수가 audio_channel_num(num)
함수에서 설정한 제한을 초과할 때 사운드를 처리하는 방법을 결정하는데 사용됩니다.
우선 순위가 낮은 사운드는 우선 순위가 높은 사운드를 위해 중지됩니다.
우선 순위 값은 임의적으로 지정할 수 있으며, 게임메이커에서는 우선 순위를 동일하게
지정하므로 0~1, 또는 0~100 사이일 수 있습니다.
숫자가 높을수록 우선 순위가 높으므로 우선 순위가 100인 사운드가 우선 순위가 1인
사운드보다 선호됩니다.
if health <= 0 { lives -= 1; audio_play_sound(snd_PlayerDead, 10, false); } |
아래 함수를 사용하면 오디오를 재생하는데 사용할 수 있는 오디오 채널 수를 설정할 수 있습니다.
◎ audio_channel_num(num) - num : 사용 가능한 오디오 채널 수(기본값은 128). |
한 번에 재생할 수 있는 동시 사운드의 수를 지정하고, 그 수가 초과되면 낮은 우선 순위의
사운드는 더 높은 우선 순위의 사운드에 대한 채널을 확보하기 위해 중지됩니다.
이 기능을 사용하면 장치에 맞게 게임을 최적화할 수 있습니다.
하지만 오디오용 채널 수가 적을수록 성능이 향상되지만, 동시에 여러 개를 재생할 경우,
특정 사운드가 눈에 띄게 끊길 수도 있습니다.
switch (os_browser) { case browser_not_a_browser: switch (os_type) { case os_windows: case os_macos: audio_channel_num(200); break; default: audio_channel_num(64); break; } break; default: audio_channel_num(16); break; } |
사운드를 정지하고 싶을 때는 아래 함수를 사용합니다.
◎ audio_stop_sound(index) - index : 재생할 사운드 인덱스 ◎ audio_stop_all( ) |
지정한 사운드만 정지하거나, 모든 사운드 재생을 정지할 수 있습니다.
audio_stop_all( ); |
재생 중인 사운드를 일시 정지 시킬 수도 있습니다.
◎ audio_pause_sound(index) - index : 일시 정지할 사운드 인덱스 ◎ audio_pause_all( ) |
지정한 사운드만 일시 정지하거나, 모든 사운드 재생을 일시 정지합니다.
if keyboard_check_pressed(ord("P")) { global.Pause = !global.Pause; if global.Pause { audio_pause_all( ); } else { audio_resume_all( ); } } |
일시 정지한 사운드는 아래 함수로 다시 재개할 수 있습니다.
◎ audio_resume_sound(index) - index : 재생 재개할 사운드 인덱스 ◎ audio_resume_all( ) |
함수는 일시 정지된 부분부터 재생합니다.
if keyboard_check_pressed(ord("P")) { global.Pause = !global.Pause; if global.Pause { audio_pause_all( ); } else { audio_resume_all( ); } } |
아래 함수를 사용하면 사운드가 재생 중인지를 체크할 수 있습니다.
◎ audio_is_playing(index) - index : 재생중인지 체크할 사운드 인덱스 |
지정할 사운드가 재생 중이면 true(1), 재생 중이 아니라면 false(0)가 반환됩니다.
단, 지정한 사운드가 일시 정지 중일 경우, 사운드는 완전히 정지된 것이 아니기 때문에
true가 반환됩니다.
이 함수는 보통 새로운 사운드를 재생하거나, 완전히 정지할 때 사용합니다.
if !audio_is_playing(snd_Waterfall) { audio_play_sound(snd_Waterfall, 10, false); } |
아래 함수를 사용하면 일시 정지 중인지를 체크할 수 있습니다.
◎ audio_is_paused(index) |
지정한 사운드가 일시 정지 중이면 true(1), 아니라면 false(0)가 반환됩니다.
if audio_is_paused(snd_Waterfall) { audio_resume_sound(snd_Waterfall); } |
아래 함수를 사용하면 일반 오디오 기능에서 사용할 수 있는 새 사운드 인덱스를 생성하여
외부 OGG 파일 소스에서 직접 사운드를 스트리밍할 수 있습니다.
◎ audio_create_stream(filename) - filename : 오디오를 스트리밍할 파일(OGG만 해당)입니다. |
더 이상 사운드가 필요하지 않은 경우에는 audio_destroy_stream(index) 함수를 호출하여
메모리에서 제거해야 합니다.
그렇지 않으면 메모리 누수가 발생하여 게임 속도가 느려질 수 있고, 게임이 중단될 수도 있습니다.
snd = audio_create_stream("Music/Track1.ogg"); audio_play_sound(snd, 0, true); |
audio_create_stream(filename) 함수를 사용하여 파일에서 오디오 스트림을 생성했을 때,
더 이상 해당 사운드가 필요하지 않은 경우, 이 함수를 호출하여 메모리에서 제거할 수 있습니다.
◎ audio_destroy_stream(index) - index : 오디오를 스트리밍한 사운드 인덱스 |
사운드가 소멸된 후, 추가로 호출하면 오류가 발생할 수 있어요.
audio_destroy_stream(snd); |
위 스트리밍 함수로 사운드 에셋을 추가하는 경우, 또는 사운드가 존재하는 지를 체크해야 하는 경우
아래 함수로 확인할 수 있습니다.
◎ audio_exists(index) |
이 함수는 사운드가 존재하면 true(1), 존재하지 않으면 false(0)를 반환합니다.
if audio_exists(global.Music) { audio_play_sound(global.Music, 0, true); } |
'GameMaker강좌[GMS2] > GMS2기초강좌' 카테고리의 다른 글
[게임메이커강좌-기초][GMS2] 텍스트 파일 작성 (0) | 2023.02.13 |
---|---|
[게임메이커 강좌-기초][GMS2] 3D 사운드 재생 (0) | 2023.01.31 |
[게임메이커 강좌-기초][GMS2]뷰 서피스 (0) | 2023.01.21 |
[게임메이커 강좌-기초][GMS2]마우스 좌표 (0) | 2023.01.18 |
[게임메이커 강좌-기초][GMS2]목표 방향으로 천천히 회전 (0) | 2023.01.15 |
댓글