https://docs.unity3d.com/kr/2020.3/Manual/AudioMixerOverview.html
(2022.02.15 기준)
Audio Mixer
[Assets 창 > 마우스 우클릭 > Create > Audio Mixer]를 선택하여 Audio Mixer를 생성합니다.
[Window > Audio > Audio Mixer]를 선택합니다.
[Groups] 좌측의 [+] 버튼을 클릭하여 위와 같이 Child Group을 생성합니다.
Audio Mixer Group 요소를 선택 후 Volume 부분을 우클릭하여 [Expose 'Volume (of {Child Group Name})' to script]를 선택합니다.
(Exposed Parameters에 추가된 파라미터는 해당 라벨 옆에 '→'(오른쪽 화살표) 표시가 나타납니다.)
이와 같은 방법으로 모든 Audio Mixer Group 요소의 Volume 파라미터를 Exposed Parameters에 추가합니다.
Audio Mixer 창의 우측 상단의 [Exposed Parameters]를 선택하여 이름을 원하는 대로 변경합니다.
다음과 같이 생성된 Parameter는 코드에서 수정할 수 있습니다.
또한 Audio Source Component가 있는 오브젝트의 Output에서 출력 Mixer를 설정할 수 있습니다.
Scripting
using UnityEngine.Audio;
Audio Mixer를 Scripting하기 위해서 위와 같은 네임스페이스를 참조해야 합니다.
AudioMixer audioMixer;
audioMixer.SetFloat("파라미터 이름", -20f);
위와 같이 SetFloat 메서드를 사용하여 Audio Mixer Group의 Volume을 조절할 수 있습니다.
(Volume값을 지정할 때, -40f ~ 0f가 적당하며 -80f는 무음이라고 합니다)
(소리가 너무 작게 느껴지면 Min Value를 -20, Max Value를 20으로 설정합니다.)
audioMixer.SetFloat("SFX", 10f);
VolumeSlider
Slider를 생성합니다.
Slider Component에서 Min Value를 -40, Max Value를 0으로 설정합니다.
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Audio;
public class VolumeSlider : MonoBehaviour
{
[SerializeField] AudioMixer audioMixer;
[SerializeField] Slider volumeSlider;
[SerializeField] string parameterName = "파라미터 이름";
public void OnValueChanged() {
audioMixer.SetFloat(parameterName,
(volumeSlider.value <= volumeSlider.minValue) ? -80f : volumeSlider.value);
}
}
위와 같이 스크립트를 생성합니다.
스크립트 컴포넌트를 Slider 오브젝트에 추가하여 위와 같이 만듭니다.
Slider Component에서 On Value Changed에 위와 같이 추가합니다.
다음과 같이 Slider를 이용하여 Volume을 조절할 수 있습니다.