Audio Mixer란?
오디오 소스에 대한 제어, 균형 및 동적 조정을 제공하여 리소스 사용을 최적화하여 게임을 즐기는 유저의 오디오 경험을 향상시킬 수 있습니다.
Audio Mixer를 사용해야 하는 이유
- 오디오 제어 및 균형 조정: Audio Source의 레벨과 균형을 세밀하게 제어할 수 있습니다. Audio Source의 볼륨을 조정하고 패닝을 적용하여 스테레오 필드의 사운드 위치를 지정하고 다양한 오디오 요소의 전체 믹스를 제어할 수 있습니다.
- 효율적인 리소스 관리: 유사한 Audio Source를 Audio 그룹으로 그룹화하여 볼륨을 제어하고 효과를 적용하고 전체적으로 조정할 수 있습니다. Audio Source개별적으로 처리하는 성능 오버헤드를 줄입니다.
- 동적 오디오 변경: 스냅샷과 노출된 매개변수를 사용하여 다양한 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 Output 세팅작업입니다.
각 기능에 맞게 Output에 BGM, SFX를 선택해 줍니다.
Audio Mixer Control 스크립트
각 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가 실행되는 것을 들을 수 있습니다.