Unity Audio Mixer 활용 방법 2


기존에 사용했던 코드를 이용하는 경우 Mathf.Log10(volume) 부분에서 범위 오류가 발생
원하는 범위 (-80 ~ 20) / 실제 사용되는 범위 (-Infinity ~ 20)
// 기존 코드
public class AudioController : MonoBehaviour
{
[SerializeField] private AudioMixer audioMixer;
public void SetMasterVolume(float volume)
{
audioMixer.SetFloat("Master", Mathf.Log10(volume) * 20);
}
public void SetBGMVolume(float volume)
{
audioMixer.SetFloat("BGM", Mathf.Log10(volume) * 20);
}
public void SetEffectVolume(float volume)
{
audioMixer.SetFloat("Effect", Mathf.Log10(volume) * 20);
}
}
// 변경된 코드
public class AudioController : MonoBehaviour
{
[SerializeField] private AudioMixer audioMixer;
public void SetMasterVolume(float volume)
{
volume = Mathf.Clamp(volume, 0.0001f, 1f);
audioMixer.SetFloat("Master", Mathf.Log10(volume) * 20);
}
public void SetBGMVolume(float volume)
{
volume = Mathf.Clamp(volume, 0.0001f, 1f);
audioMixer.SetFloat("BGM", Mathf.Log10(volume) * 20);
}
public void SetEffectVolume(float volume)
{
volume = Mathf.Clamp(volume, 0.0001f, 1f);
audioMixer.SetFloat("Effect", Mathf.Log10(volume) * 20);
}
}