240321-TIL
3월 21일
오늘은 유니티의 Audio Mixer를 정리해 보도록 하겠다.
Audio Mixer
오디오 믹서~~~~~~~
나는 유니티를 작업하면서 사운드를 넣게될때면

요런 오디오 소스를 만들어서 오디오 클립을 넣어주는 형태로 작업을 했었다
하지만.... 게임의 규모가 커질수록? 이 오디오 소스에서 들려주는 BGM 혹은 효과음들이 많아지게 될것이다
이때 이 오디오 소스를 효율적으로 관리하게 도와주는 녀석이 바로 오디오 믹서라고 하는 녀석이다

유니티에선 오디오 믹서의 개념과 개요를 잘 설명해주고 있다.
즉 오디오 소스에 대한 제어, 균형 및 동적 조정을 제공해서? 리소스 사용을 최적화 시킨다.
이미지로 보면 더 이해가 확 와닿는다

오디오 믹서를 만드는 방법은 다음과 같다


초기의 상태는 이렇다 Master라는 녀석 달랑 하나만 존재하는데

여기 그룹의 +버튼을 누르면 Master의 자식으로 새로운 그룹을 만들어줄수있다

일단 Master라고 하는 녀석은 전체 볼륨 조절 그리고 나는 +버튼을 눌러 BGM과 SFX 그룹을 만들어주었다
저기까지만 보면 일반 게임에 흔히 있는 게임옵션 UI를 생각하면 된다

이런 느낌인 것이지

그룹을 선택하게 되면 Expose 어쩌구 저쩌구 스크립트라고 하는게 뜨는데 선택해주고
3개 그룹 모두 동일하게 설정해준다

이름도 바꿔주고

이렇게 만들어준 오디오 소스에 오디오 믹서 그룹을 추가해주자
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);
}
}
UI 슬라이더를 만들어주고 해당 UI 슬라이더로 볼륨을 조절할 수 있도록 스크립트도 만들어서 넣어주자
끝
오늘은 오디오 소스를 효율적으로 관리하는 오디오 믹서에 대해서 알아보았다.
겸사겸사 Slider로 볼륨을 조절할 수 있도록 하는 예제 코드도 가져와서 알아보았다.
단지 오디오 소스만 달랑 만들어서 클립만 넣어주는 형식보단 오디오 믹서를 적극활용해서 사용해보자
3월 21일 TIL은 여기서 마치도록 하겠다.