2024. 6. 5. 18:59ㆍUnity/Unity 학습정리
게임에서 사운드 조절을 할 때 UI를 이용해서 조절한다. 보통은 슬라이더를 이용해서 0~100사이의 값을 조절하거나, 직접 값을 넣어 사운드를 조절하기도 한다. 토글기능을 통해서 아예 듣고싶지 않은 사운드를 끄거나 킬 수도 있는데 이번에 팀플레이 과제를하면서 사운드관련 작업을 해봤다.
목차
- AudioMixer
- 슬라이더바 스크립트
- 결과
AudioMixer
유니티에서 제공하는 AudioMixer는 우리가 늘 사용하던 오디오라고 생각하면 된다. 예를들어 마스터 볼륨이 있고, 그 밑으로 효과음, 배경음악, 대화소리 등 다양한 오디오가 존재하는데 그것을 AudioMixer로 관리할 수 있다. Group을 만들어서 사운드 종류별로 개발자가 원하는데로 조절이 가능하다는 것이다.
BGM 그룹을 따로 만들었고 환경설정에서 오디오 UI를 이용해 스크립트와 연결지어 슬라이더의 값조절을 통해 실제 사운드 조절을 할 수 있다.
Audio Source 컴포넌트의 아웃풋으로 해당 믹서를 넣어줘야하고 믹서의 볼륨을 Expose해야한다.
그룹별로 Expose를 하면 Exposed Parameters가 생성된다. 해당 Parameter의 이름을 임의로 변경해서 사용하면된다.
이렇게 되면 슬라이더바에서 음량을 조절하기 위한 준비단계는 모두 끝났다.
슬라이더바 스크립트
먼저 슬라이더바 UI를 캔버스에 생성하고 해당 오브젝트에 스크립트를 붙힌다.
public class SoundSliderUI : MonoBehaviour
{
public AudioMixer audioMixer;
public void SetLevel(float value)
{
audioMixer.SetFloat("MasterVolume", Mathf.Log10(value) * 20);
}
}
auidoMixer를 인스펙터뷰에서 원하는 audioMixer를 넣어주고 audioMixer에서 아까 Exposed Parameter의 이름을 정해준것을 SetFloat의 첫번째 매개변수로 두고 해당 값을 슬라이더 value에 따라서 볼륨을 조절하는 것이다
- AudioMixer는 볼륨값이 -80~0이다.
- value는 슬라이더의 값으로 최솟값 0.0001 최댓값 1로 설정한다
- 그럼 Log10을하고 *20을 하면 (-80,0) 사이의 값이 도출된다.
마지막으로 슬라이더의 On Value Changed 이벤트에 함수를 등록해준다.
결과
이렇게 스크립트를 작성하면 AudioVolume이 UI 슬라이더의 값에 따라서 바뀐다. 지금은 BGM만 설정해서 MasterVolume으로 파라미터를 설정해 조절하고있지만, 나중에 다양한 효과음, 배경음, 대화소리등 그룹을 AudioMixer를 통해 UI로 조절 할 수 있다.
'Unity > Unity 학습정리' 카테고리의 다른 글
Unity - FSM(Finite State Machine)(2) (0) | 2024.06.18 |
---|---|
Unity - FSM(Finite State Machine)(1) (0) | 2024.06.17 |
Unity - Scriptable Object (0) | 2024.05.27 |
Unity - Object Pool (0) | 2024.05.23 |
Unity - 싱글톤 패턴 (0) | 2024.05.21 |