[유니티] 사운드 최적화 하는법
유니티 게임을 개발하다 보면 최적화가 얼마나 중요한 작업인지 깨닫는다.
특히 사운드 입힐때? (사운드를 추가하니까 갑자기 렉이 걸림.)
1.3d Sound Settings
3d Sound Settings아래 Doppler level 을 0으로 변경해주기.
입체음향을 사용하지 않는 모바일게임이나 2d에서는 Doppler level 을 0 으로 변경해준다.
Reverb Zon Mix 또한 0으로 설정해준다.
3d환경에서 사용되며 동굴지형등에서의 울리는 소리지만 최적화를 위하여 0으로 설정.
2.멀티 사운드 채널 (Force To Mono)
일부 사운드는 복수 사운드채널을 보유할 때가 있다. 이를 합치면서 입체음향 효과를 없애고 용량을 최적화할수있다.
(주의: 작은 소리들은 합치면서 소리가 커진다.)
3.사운드 재생방식
Force To Mono:복수 사운드 채널을 하나로 합친다.
Normalize :사운드를 정규화한다. (보통은 체크한 채로 둔다.)
Load In BackGround: 비동기 방식으로 사운드를 설정. 사운드를 재생할 준비가 된 상태에서만 재생을 시작. (보통은 체크안한다.)
Ambisonic: 리스너 방향에 따라 회전하는 사운드필드를 지원하는것. (보통은 체크안함)
Load Type :압축 방식 결정
Decompress On Load : 미리 압축 해제해서 메모리에 올려둠 . 메모리를 더 많이 차지하지만 Cpu 부담을 줄임. 재생이 빠름. 효과음ㅇ에 사용
Compressed In Memory : 압축상태로 메모리에 올려뒀다가 재생할때 해제
Streaming : 사운드를 즉시 디코딩한다. 매우 큰 파일에 적합하고 최소한의 메모리를 사용. 주 배경음에 이용되지만 Compressed In Memory 방식을 더 추천.
Preload Audio Data: Streaming 을 제외한 나머지 두 모드에서 선택할 수 있습니다. 오디오 에셋을 미리 불러올 것인지 결정. 기본값은 true. 배경음의 경우 false
Quality: 퀄리티 값이 높을수록 소리는 선명하게 나오지만 용량을 크게 잡아먹게됩니다. 퀄리티 값이 낮을수록 소리는 뭉게지지만 게임 용량을 매우 적게 잡아먹게됩니다.
재생시간이 긴 배경음악(BGM)은 로드타입을 Compressed In Memory 로 선택하고, Compression Format 을 Vorbis 로 설정. 압축 품질을 40~70 사이로 세팅합니다.
재생시간이 짧은 효과음 (SE) 는 로드타입을 Demopress On Load 로 선택하고 Compression Format의 경우 Vorbis 를 추천. 압축품질을 1~70 사이로 세팅합니다.
Sample Rate Settiong : 샘플 레이트의 상태를 변화할 수 있습니다. 샘플레이트란, 사운드의 프리뷰 하단 진동수(Hz) 값을 컨트롤 하겠단 의미.
Preserve Sample Rate:기본값. 수정되지 않은 상태 유지
Optimize Sample Rate : 샘플레이트를 분석된 하이 프리퀀시 콘텐츠에 따라 최적화.
Override Sample Rate : 샘플레이트의 수동 오버라이드를 허용하여 실질적으로 주파수 성분을 제거할 때 사용.
진동수(Hz)가 낮을수록 Import 용량이 낮아지지만 소리가 깨지고 뭉개짐. 진동수(Hz)가 높을수록 Import 용량이 높아지는 대신 소리 음질이 좋아짐.
(유니티 내부에서 조정하는 것은 파일 자체 크기를 줄여주지 않기 때문에 파일 밖에서 수정하는것이 좋다.)
4.사운드 자르기
여백 제거해서 파일크기 줄이기
5.진동수 조절
주의: 확줄이면 많이 중개짐,진동수 값을 낮게 조절하면 오디오의 비트 전송률(kbps)이 낮아짐
6.사운드 확장자
mp3,ogg는 주로 배경음악.(딜레이 발생우려) wav,aiff는 주로 효과음.
7.오디오 매니저
Dopper Factor 를 0으로 설정
모바일의 경우 하나의 채널만 사용하는 Mono 로 변경
8.싱글톤을 사용하여 pool 으로 만들기
하나의 오디오매니저 스크립트를 만들어서 일일이 재생시키는것이 아니라, 한 스크립트에서 미리 불러온 이후 함수를 부르는 식으로하기.