Priv's Blog

오디오 볼륨 조절 슬라이드 바 만들기 본문

Dev. Study Note/Unity

오디오 볼륨 조절 슬라이드 바 만들기

Priv 2021. 11. 15. 14:56


 

 


출처


 

1. Slider 추가

볼륨 조절에 사용할 Slider 오브젝트를 먼저 추가하자.

Hierarchy > 마우스 우클릭 > UI > Slider를 클릭하면 된다.

 


 

2. AudioSource 준비

AudioSource는 연결된 AudioClip을 재생하는 역할을 수행한다.

AudioSource 컴포넌트의 AudioClip은 재생할 오디오 파일을 의미한다.

AUdioSource 컴포넌트의 Output은 오디오 파일을 어디서 재생할 것인지를 결정한다.

기본적으로 Output 설정은 Main Camera에 붙어 있는 AudioListener이며, AudioMixer를 추가해 출력 위치를 변경해줄 수도 있다.

Empty GameObject를 1개 추가한 뒤, AudioSource 컴포넌트를 연결한다.

다른 오브젝트에 이미 AudioSource가 붙어 있고, 해당 AudioSource의 볼륨을 제어하고자 한다면, 굳이 Empty GameObject를 추가하지 않아도 된다.

 


 

3. AudioMixer 설정

AudioMixer를 새로 생성한다.

AudioMixer는 AudioSource의 Output에 연결하면 된다.

정상적으로 연결이 되었다면, 아래 사진과 같이 AudioMixer의 게이지가 반응할 것이다.



 

이제 AudioSource에서 출력되는 사운드 볼륨을 AudioMixer에서 제어할 수 있다.

AudioMixer는 하나의 가상 앰프의 역할을 수행하는데, 우리는 슬라이더 바를 이용해 사운드 볼륨을 조절할 것이므로, 아래 사진에 보이는 AudioMixer 메인 화면 속 볼륨 바를 조절할 수 있도록 만들면 된다.


 


 

볼륨 바를 코드로 조절하려면, 에디터 상에서 약간의 세팅이 필요하다.

Project 창에서 생성한 AudioMixer의 자식으로 연결된 Mixer를 클릭한다.

Inspector 창에서 Attenuation 아래의 Volume을 클릭, Expose 'Volume (of Master)' to script를 클릭한다.



 

이제 Audio Mixer 창에서 Exposed Parameters (0) 부분이 (1)로 바뀌었을 것이다.

메뉴를 클릭한 뒤, 원하는 이름으로 설정해주자.


 


 

이로써 스크립트 작업을 위한 AudioMixer 사전 준비는 끝났다.

이제 Slider 오브젝트를 클릭한 뒤, 스크립트 파일을 추가해주자.

 


 

4. 스크립트 작업

슬라이드 바를 마우스로 잡고 움직일 때, 사운드 볼륨이 줄어들거나 커져야 한다.

이때 주의할 점은 AudioMixer의 최소~최대 볼륨 값이 0~100이 아니라 -80에서 0까지라는 것이다.

스크립트 작업을 하기 전, Slider 오브젝트의 Min Value 값이 0.0001, Max Value 값이 1로 되어 있는지 확인하자.

using UnityEngine;
using System.Collections;
using UnityEngine.Audio;

public class SetValure : MonoBehaviour {
    public AudioMixer mixer;
    
    public void SetLevel(float sliderVal) {
        mixer.SetFloat("masterVol", Mathf.Log10(sliderVal)*20);
    }
}

Log10을 사용한 이유는 식을 계산해보면 바로 알 수 있다.

슬라이더 최소 값인 0.0001을 대입하면 -80, 최대 값인 1을 대입하면 0이 나온다.

 


 

5. Slider 설정 작업

AudioMixer 설정도, 스크립트 작성도 마쳤다.

이제 Slider를 조작했을 때, AudioMixer에 연결되도록 설정해주면 끝이다.

Button을 구현할 때, Inspector 창에서 On Value Changed 카테고리를 활용하면 특정 오브젝트 또는 스크립트를 연결하여 public 함수를 호출하거나, 값을 바꾸는 작업을 수행할 수 있다는 것은 알고 있을 것이다.

이전에는 스크립트로 해야 했던 것으로 기억하지만, 이제는 드래그&드롭만으로 손쉽게 구현이 가능해졌다.

Slider 또한 이와 동일한 기능을 제공한다.

On Value Changed 카테고리에 항목을 1개 추가한 뒤, Slider 오브젝트에 방금 추가했던 스크립트 컴포넌트를 아래 사진처럼 드래그&드롭으로 연결해주자.



 

No Function 메뉴를 클릭한 뒤, 스크립트 작업 단계에서 생성했던 SetLevel() 메서드를 클릭하자.

이때, Dynamic float이라는 카테고리 내에 메서드 이름이 떠야 정상이다.

아래 사진을 참고하자.



 


 

Comments