
#Audio Mixer
오늘 쿠키런 만들기 팀 프로젝트에서 새로 시도해 본 작업을 했다.
MainScene에서 메인 볼륨과 BGM을 넣고
소리를 조절할 수 있게 하는 UI작업을 했다.
1. 좌측 상단에 Mixers 옆에 +를 눌러 추가하고 이름을 지정한다.
2. Groups에서도 +를 눌러 내가 사용할 사운드 종류의 개수만큼 추가한다.
3. 그룹별로 Expose를 하면 Exposed Parameters가 생성된다.
4. 해당 Parameter의 이름을 임의로 변경해서 사용하면된다. (+ 누르는게 아니라 옆에 삼각형을 눌러야 함)
5. 오디오 오브젝트 만들어주고 AudioSource컴포넌트를 추가해 AudioClip에는 내가 사용할 사운드 파일을 넣고, Output에는 AudioMixer에서 만들었던 해당 Mixer를 집어넣는다.
코드는 이런 식으로 짠다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
public class SoundController : MonoBehaviour
{
public static SoundController instance; // 싱글톤 인스턴스
[SerializeField] private AudioMixer _audioMixer; // 오디오 믹서
[SerializeField] private Slider _masterSlider; // 슬라이더
[SerializeField] private Slider _bgmSlider;
[SerializeField] private Slider _sfxSlider;
private void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
if (instance != this)
{
Destroy(gameObject);
}
}
}
public void SetMasterVolume() // 메인 볼륨 조절
{
float volume = _masterSlider.value;
_audioMixer.SetFloat("Master", Mathf.Log10(volume) * 20);
}
public void SetBgmVolume() // 배경음악 볼륨 조절
{
float volume = _bgmSlider.value;
_audioMixer.SetFloat("BGM", Mathf.Log10(volume) * 20);
}
public void SetSfxVolume() // 효과음 볼륨 조절
{
float volume = _sfxSlider.value;
_audioMixer.SetFloat("SFX", Mathf.Log10(volume) * 20);
}
}
6. AudioMixer는 볼륨값이 -80~0이다.
value는 슬라이더의 값으로 최솟값 0.0001 최댓값 1로 설정한다.
그럼 Log10을하고 *20을 하면 (-80,0) 사이의 값이 도출된다.
=
7. 사진 속에서 4번은 SoundManager에 있는 SoundController.cs의 SetMasterVolume()를 선택해주면 된다.
마지막으로 효과음은 제대로 하지 못했고 저 코드는 DontDestroyOnLoad를 통해 다른 씬으로 이동해도 파괴되지 않아서 BGM이 계속해서 출력된다.
사운드 조절하는 슬라이드 스크립트도 SoundManager오브젝트에 들어있다.