유니티 Unity

[유니티(Unity)] 프로젝트 기본 세팅 - (2) 사운드 (AudioSource, AudioListener), 음악 파일 기본 세팅(배경음악, 효과음)

한비 2021. 9. 1. 01:05
반응형

1. 음악 재생을 위한 AudioSource와 AudioListener

게임에 삽입하는 음악은 크게 배경음악과 효과음으로 나눌 수 있다. 음악을 재생하기 위해서는 AudioSource 컴포넌트가 필요한데, 나는 주로 SoundManager라는 Empty object를 만들어놓고 하위 자식으로 각각 BGM/Effect이라는 오브젝트를 만들어 AudioSource 컴포넌트를 추가해두었다.

Hierarchy 창의 모습
AudioSource 컴포넌트를 추가한 모습

AudioSource 하나로 관리해도 되지만 배경음악과 효과음이 동시에 재생될 일이 많고 볼륨 조절도 따로 하는 경우가 많기 때문에 둘은 분리하는 것이 낫다고 판단했다. 참고로 컴포넌트 추가는 오브젝트 선택 후 add component를 눌러 추가할 컴포넌트를 검색하면 된다. 

 

AudioSource는 CD 플레이어, AudioClip은 CD라고 이해하면 쉽다. 이때 음악을 들어줄 AudioLister 컴포넌트도 필요한데, 이 컴포넌트는 유니티에서 카메라 오브젝트를 생성하면 기본으로 오브젝트에 들어있어 따로 추가할 필요는 없다. 

참고로 게임 실행 중에 카메라 오브젝트 2개가 동시에 켜져있는 경우 콘솔창에 다음과 같이 2개의 audio lister가 있으니 수정해달라는 경고 메세지가 나온다. 


2. 코드에 AudioSource 및 AudioClip 연결

변수로 AudioSource, AudioClip을 선언하고 해당 스크립트를 컴포넌트로 갖는 오브젝트의 inspector창에 AudioSource 컴포넌트와 AudioClip(mp3, wav등의 음원 파일)을 각각 연결하면 된다. 또한 Start()에서 loop나 playOnAwake 등을 세팅하고 배경음악의 경우 Play()로 게임이 시작될 때부터 재생한다.

 

public AudioSource asBGM; //배경음악 제어
public AudioClip stage8bgm; //메인 배경음악   

public AudioSource asEffect;  //효과음 제어
public AudioClip watchMemory; //기억을 볼 때 효과음
public AudioClip watchedEveryMemory; //기억을 다 봤을 때 효과음

void Start()
{
     asBGM.loop = true;
     asBGM.playOnAwake = true;
     asBGM.clip = stage8bgm;
     asBGM.Play();

 

     asEffect.loop = false;
     asEffect.playOnAwake = true;

}

inspector창에 컴포넌트들을 연결한 모습

중첩 재생이 필요한 음악의 경우 PlayOneShot() 함수를 활용한다. 

예) asEffect.PlayOneShot(watchMemory);


3. 음악 파일 기본 세팅 (출처: https://mentum.tistory.com/221)

 

유니티 오디오 세팅 / 사운드 재생 딜레이 현상 ( Unity audio play / sound delay / latency )

 에디터 상에서는 소리가 잘 나왔는데, 막상 모바일로 빌드해보면 소리가 약간 늦게 나온다거나 하는 현상이 있다.  기본 설정에서는 빌드할 때는 오디오 파일을 압축해서 재생할때 플레이 하

mentum.tistory.com

[ Audio import setting ]

1) Force To Mono(모노 강제조정) : 채널을 하나만 사용한다. 최적화를 중시한다면 체크 / 사운드의 퀄리티를 원한다면 언체크

2) Load In Background(지연된 로딩) : 배경음악이라면 체크 / 타이밍에 맞춰 재생하는 효과음이라면 언체크

3) Load Type

(1) Decompress On Load : 미리 메모리에 통채로 올려놓고 바로바로 읽어낼 수 있음. 효과음에 사용. 

레이턴시가 제일 적다. 하지만 메모리를 엄청먹으니 PCM하고만 같이 사용할 것을 추천함.

(2) Compressed In Memory : 압축 상태로 메모리에 올려놓고 읽을 때 압축 풀어서 재생함. 보이스 사운드 등에 사용

(3) Streaming : 필요할때 실시간으로 읽어냄. 레이턴시가 상관없는 보통 배경음악에서 사용

4) Compression Format

(1) PCM : 최고품질 / 용량 큼 / Load Type은 Decompress On Load로 하자

(2) ADPCM : 중간 품질 / 용량 중간

(3) Vobis : 최저품질 / 용량 작음

5) Quality(음질) : Vobis의 최종적인 음질을 결정함. ( 100%면 의미없고 보통 70%정도 )

 

[ 결론 ]

1) 배경음악 : Load In Background 체크

Load Type : Streaming

Compression Format : Vobis (퀄리티에 따라 다르지만 보통 70-80%)

 

2) 타이밍 중요한 효과음 : Load Type : Decompress Decompress On Load

                                  Compression Format : PCM

3) 보이스 혹은 타이밍 적당히 중요한 효과음 :  Load Type : Compressed In Memory

                                                             Compression Format :  ADPCM

4) 딜레이가 있어도 상관없는 효과음 :  Load Type : Compressed In Memory

                                                  Compression Format :  Vobis

반응형