오디오 믹서를 사용해서 배경음악 볼륨 조절 바 만들기

2025. 1. 8. 21:48카테고리 없음

설정창을 만들어서 배경음악볼륨을 줄이는 기능을 만들었다.

지금 오디오소스에 클립이 clip이 동적으로 적용되기 때문에 오디오소스에 Output도 동적으로 연결해 줘야 해서 밑에와같이 코드를 작성했다.

public AudioMixer audioMixer;

public void PlaySound(string name, string groupName, bool isLoop = false)
{
    audioSource = new GameObject($"Sound_{name}").AddComponent<AudioSource>();
    audioSource.volume = 0.05f;
    audioSource.loop = isLoop;

    audioSource.clip = Resources.Load<AudioClip>($"Sounds/{name}");
    audioMixer = Resources.Load<AudioMixer>("AudioMixer/LobbyMixer");
    Sound(groupName);
}

public void Sound(string groupsName)
{
    audioSource.outputAudioMixerGroup = audioMixer.FindMatchingGroups($"{groupsName}")[0];
    audioSource.Play();
}

그리고 만들어뒀던 SoundBar에 동적으로 생성한 AudioMixer를 연결해 주면 된다.

public class SoundBar : MonoBehaviour
{
    public AudioMixer mixer;
    public Slider audioSlider;
    
    private void Start()
    {
        mixer = AudioManager.Instance.audioMixer;
        
        float currentVolume;
        if (mixer.GetFloat("BGM", out currentVolume))
        {
            audioSlider.value = currentVolume;
        }
    }

    public void OnAudioControl()
    {
        float sound = audioSlider.value;
        if(sound == -40f) mixer.SetFloat("BGM", -80f);
        else mixer.SetFloat("BGM", sound);
    }
}

 

그럼 밑에 스크롤바와같이 스크롤을 움직이면 해당 스크롤바와 연결해놓은 곳이 Volume이 줄어든게 확인이된다.