Unity

[Unity] Audio Clip, Source, Mixer / 오디오 볼륨 조절 슬라이더

youcheachae 2025. 2. 26. 23:44
1. Audio 컴포넌트
2. Audio 플레이
3. 오디오 볼륨 조절 슬라이더

📝 1. Audio컴포넌트                                                                                                                                                       

🔖 Audio Clip

  • 재생할 수 있는 오디오 데이터
  • 유니티는. aif,. wav,. mp3, 및. ogg 형식을 지원함

 

🔖 Audio Souce

  • 씬에서 오디오를 재생할 수 있는 컴포넌트
  • 2D/3D 사운드 설정 가능 

 

🔖 AudioMixer 

  • 오디오 소스에 대한 제어, 균형 및 동적 조정을 제공
  • 그룹화를 통한 카테고리별 사운드 관리 가능 (BGM, SFX, Voice 등)

 

📝2. Audio 플레이                                                                                                                                   

 

0. 오디오를 "듣기"위해서 Main Camera에 AudioListener 컴포넌트를 달아준다

 

1. 오브젝트에 AudioSource 컴포넌트를 추가한다

AudioSource 필드에 오브젝트의 AudioSource  컴포넌트를 할당한다

AudioClip필드에 실행할 오디오 클립을 할당한다

 

2. BGMPlayer.cs

public class BGMPlayer : MonoBehaviour
{
    public AudioSource source;
    public AudioClip clip;

    void Start()
    {
        source = GetComponent<AudioSource>();
        
        // 1. Play 함수
        source.Play();

        // 2. PlayOnShot 함수
        source.PlayOneShot(clip);
    }

}

AudioSource.Play()

              해당 소스에 할당된 AudioClip을 처음부터 재생

              매개변수가 없음 (AudioSource 컴포넌트에 AudioClip이 미리 할당되어야 함)

AudioSource.PlayOneShot(AudioClip)

              한 번에 여러 오디오를 겹쳐 재생할 수 있음

              재생시킬 오디오 clip을 매개변수로 받음

              같은 소스에서 여러 효과음을 동시에 재생할 때 유용함

 

3. 실행

실행하면 오디오가 1회 실행되는 것을 확인할 수 있다

혹시 들리지 않는다면 게임화면의 소리가 음소거되어있는지 확인하자 

 

📝3. 오디오 볼륨 조절 슬라이더                                                                                                                                     

1. Create →  Audio Mixer를 클릭하여 오디오믹서를 만든다

 

2. 우측 Groups에서 (+) 버튼을 눌러 그룹을 만든 뒤 이름을 BGM과 SFX로 지정한다

 

3. Asset폴더에 생성되어 있는 AudioMixer하위의 Master을 클릭한 후 

인스펙터 창의 Volume 위에서 우클릭

→ Expose 'Volume (of Master) to script"를 클릭

 

🔖 스크립트로 Audio Mixer의 Master / BGM / SFX 그룹에 접근하기 위해서 Expose를 해줘야 한다.

  볼륨 옆에 → 화살표가 뜨면 된 것이다

 

4. AudioSource가 할당되어 있는 오브젝트의 AudioSource → Output에 만든 AudioMixer의 그룹을 할당해 준다

BGM을 실행하는 오브젝트의 AudioSource뿐만 아니라 SFX를 실행하는 AudioSource에도 Output을 설정해 준다 

 

5. AudioMixer의 파라미터 설정

해당 그룹에 맞는 파라미터로 이름을 수정해 주면 된다

왼쪽에 흐릿한 글씨로 Volume(of BGM)를 확인한다. BGM이면 AudioSource의 Output이 "BGM"인 경우에 해당한다. 

 

6. AudioSlider.cs

using UnityEngine.Audio;
using UnityEngine.UI;

public class AudioSlider : MonoBehaviour
{
    public AudioMixer audioMixer;

    public Slider MasterSlider;
    public Slider BGMSlier;
    public Slider SFXSlider;

    private float minVolume = -60f;
    private float maxVolume = 10f;
    
    
    void Start()
    {
        MasterSlider.onValueChanged.AddListener(SetMasterVolume);
        BGMSlier.onValueChanged.AddListener(SetBGMVolume);
        SFXSlider.onValueChanged.AddListener(SetSFXVolume);

    }
    public void SetMasterVolume(float volume)
    {
        audioMixer.SetFloat("Master", Mathf.Clamp(volume * 100 - 80 , minVolume , maxVolume));
    }

    public void SetBGMVolume(float volume)
    {
        audioMixer.SetFloat("BGM", Mathf.Clamp(volume * 100 - 80 , minVolume , maxVolume));
    }

    public void SetSFXVolume(float volume)
    {
        audioMixer.SetFloat("SFX", Mathf.Clamp(volume * 100 - 80 , minVolume , maxVolume));
    }

}

Slider.onValueChanged.AddListener()

               슬라이더에서 값 수치가 변경될 경우에 실행됨

             □ UI 슬라이더와 오디오 볼륨을 연결할 때 사용

AudioMixer.SetFloat(string, float)

               첫 번째 매개변수: 믹서에서 정의한 파라미터 이름

               두 번째 매개변수: 설정할 값 (일반적으로 dB 단위)

              AudioMixer은 -80부터 +20까지 소리를 지원한다.

              너무 작거나, 너무 크면 소리가 깨지는 현상이 발생하기 때문에 min과 max값 사이에서 볼륨의 크기를 정한다.

 

AudioMixer.SetFloat를 지정하는 일반적인 방법

audioMixer.SetFloat("Master", Mathf.Log10(Mathf.Max(0.001f, volume)) * 20);

: 데시벨(dB)은 로그 스케일이므로 슬라이더(0~1) 변환 시 로그 함수를 권장함

 

 

7. 실행

소리는 안 들린다

  Matser 슬라이더를 조절하면 AudioMixer에 Master 볼륨이 조절된다.

  BGM 슬라이더를 조절하면 AudioMixer에 BGM 볼륨이 조절된다.

  SFX 슬라이더를 조절하면 AudioMixer에 SFX  볼륨이 조절된다.