유니티/공통

유니티 - Audio Mixer를 사용해보자 (+ 스크립트에서 불러올 때 주의할 점)

근본넘치는개발자 2024. 11. 20. 22:24

그동안 프로젝트를 진행하면서 사운드를 제대로 다룬 적이 없었는데

어쩌다 보니 기회가 생겨 Audio Mixer를 처음 사용해 봤습니다.

 

사용하면서 겪었던 문제와 함께 간단하게 정리해 보고자 합니다.

 

Audio Mixer는 프로젝트 창(화면 아래에 나오는 창, Assets 들어있는)에서

우클릭하여 생성할 수도 있고, 윈도우를 통해서 생성 할 수도 있습니다.

 

우클릭 방식

 

윈도우 방식

 

생성하면 다음과 같은 아이콘의 Audio Mixer가 생깁니다. 

 

내부 구조는 다음과 같습니다.

 

 

그동안 사운드를 다뤄보셨다면 Audio Sorce 컴포넌트를 연결하여 사용하셨을 겁니다.

 

내부를 자세히 보면 Output에 Audio Mixer Group이라고 되어 있는 부분 보이시나요.

저 부분에 Audio Mixer를 연동하면 한 번에, 손쉽게 Audio를 관리할 수 있습니다.

 

겪었던 문제점 

 

Master, BGM, SFX 이렇게 3개의 그룹이 있었고

코드를 통해 각각에 맞는 Audio Mixer 그룹에 접근하여

음량을 조절하는 코드를 작성했습니다.

 

(코드가 뭔가 복잡해 보이지만 사실 아래 참고한 영상과 같은 내용의 코드입니다. )

 public void SetSFXVolume()
 {
     if (masterMixer == null) return;
     masterMixer.SetFloat("SFX", LinearToDecibel(prevSoundSfxValue));
 }

 private float LinearToDecibel(float linear)
 {
     float dB;
     if (linear != 0)
         dB = 20f * Mathf.Log10(linear);
     else
         dB = -80f; // 음소거 수준
     return dB;
 }

 

하지만 동작하지 않았습니다.

 

결론부터 말하자면 그룹에서 보이는 이름과

실제 스크립트에서 불러올 때의 이름은 다른 개념입니다.

 

Audio Mixer 맨 오른쪽에 보면 저렇게 Exposed Parameters라고 되어있는 부분에서

이름 설정을 해주어야 스크립트에서 불러올 수 있는 거였습니다.

 

 

설정하는 법은 원하는 Mixer를 선택하신 후 

 

인스펙터 창에서 Attenuatuion 위 우클릭하여 Expose를 설정해 줄 수 있습니다.

 

그러면 아래와 같이 뜨는데

MyExposedParam 부분을 클릭하여 원하는 이름으로 바꿔주면 됩니다.

 

 

이렇게 설정하고 나서야 정상적으로 동작할 수 있었습니다.

 

마무리 

오늘은 간단하게 Audio mixer에 대해 알아보았습니다.

사실 별거 아니었는데 처음이라서 헤맸던거 같습니다.

 

눈물 나네요.. 

역시 아는 만큼 보이는건가..

 

더 자세한 기능 사항들에 대해서는

아래 영상을 참고하시면 좋을 것 같습니다.

 

참고한 자료 

 

https://youtu.be/vOaQp2x-io0?si=06u54r1-mmxcbYg0

https://youtu.be/C1gCOoDU29M?si=lSS3Y3njCB9idzxm