유니티 Audio Mixer 사용방법

Audio Mixer란?

오디오 소스에 대한 제어, 균형 및 동적 조정을 제공하여 리소스 사용을 최적화하여 게임을 즐기는 유저의 오디오 경험을 향상시킬 수 있습니다.


Audio Mixer를 사용해야 하는 이유

  1. 오디오 제어 및 균형 조정:  Audio Source의 레벨과 균형을 세밀하게 제어할 수 있습니다.  Audio Source의 볼륨을 조정하고 패닝을 적용하여 스테레오 필드의 사운드 위치를 지정하고 다양한 오디오 요소의 전체 믹스를 제어할 수 있습니다. 
  2. 효율적인 리소스 관리: 유사한 Audio SourceAudio 그룹으로 그룹화하여 볼륨을 제어하고 효과를 적용하고 전체적으로 조정할 수 있습니다. Audio Source개별적으로 처리하는 성능 오버헤드를 줄입니다.
  3. 동적 오디오 변경: 스냅샷과 노출된 매개변수를 사용하여 다양한 Audio Mix 설정 간에 부드러운 전환을 생성하고, 게임 이벤트에 따라 볼륨 레벨을 조정하고, Audio 효과를 동적으로 적용하고, 게임 플레이 상태에 반응하는 몰입형 오디오 경험을 제공할 수 있습니다.

 


Audio Mixer 만드는 방법

[Create] - [Audio Mixer]을 클릭하여 Audio Group을 만들어줍니다. 처음에는 Master만 존재합니다.
[+] 버튼을 눌러서 그룹을 추가해 주면 됩니다. 이때 Master 자식으로 그룹이 분류되며 BGM그룹, SFX그룹으로 나누어 줍니다.

 Audio Mixer에 Master, BGM, SFX 3그룹이 생긴 것을 볼 수 있습니다! 

하나의 그룹을 선택해 준 다음 Attenuation의 Volume을 찾아주시고 우클릭해서 Expose 'Volume..'을 눌러줍니다.
우측 사진처럼 Volume에 화살표가 생기면 된 것입니다.
 
3개의 그룹 모두 똑같이 해줍니다.


마지막으로, Exposed Parameters의 이름을 Master, BGM, SFX로  바꾸어줍니다.
 
 


 Audio Source Output

Audio Source

Audio Source Output 세팅작업입니다.
 
각 기능에 맞게 Output에 BGM, SFX를 선택해 줍니다.
 


Audio Mixer Control 스크립트

UI 구성

각 Volume을 컨트롤할 수 있는 "UI - Slider" 구성을 만들어줍니다.

다음으로 아래 스크립트를 작성 후 게임오브젝트에 붙여줍니다.

public class AudioMixerController : MonoBehaviour
{
    [SerializeField] private AudioMixer m_AudioMixer;
    [SerializeField] private Slider m_MusicMasterSlider;
    [SerializeField] private Slider m_MusicBGMSlider;
    [SerializeField] private Slider m_MusicSFXSlider;

    private void Awake()
    {
        m_MusicMasterSlider.onValueChanged.AddListener(SetMasterVolume);
        m_MusicBGMSlider.onValueChanged.AddListener(SetMusicVolume);
        m_MusicSFXSlider.onValueChanged.AddListener(SetSFXVolume);
    }

    public void SetMasterVolume(float volume)
    {
        m_AudioMixer.SetFloat("Master", Mathf.Log10(volume) * 20);
    }

    public void SetMusicVolume(float volume)
    {
     	m_AudioMixer.SetFloat("BGM", Mathf.Log10(volume) * 20);
    }

    public void SetSFXVolume(float volume)
    {
        m_AudioMixer.SetFloat("SFX", Mathf.Log10(volume) * 20);
    }  
}

 

세팅

슬라이드 세팅까지 다했으면 마지막으로 슬라이더 MinValue을 0.001로 해줍니다.
세팅은 모두 끝났으므로, 에디터를 플레이시킨 후 슬라이더 컨트롤에 맞게 Sound가 실행되는 것을 들을 수 있습니다.