내일배움캠프 24일차 TIL <Unity Audio Mixer> 05/13

정광훈(Unity_9기)·2025년 5월 13일

TIL (Today I Learned)

목록 보기
36/103
post-thumbnail

#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오브젝트에 들어있다.

0개의 댓글