설명용으로 재현한 AudioMixer 그룹 라우팅과 덕킹(Ducking) 설정입니다. SFX 전송량에 따라 BGM 볼륨을 감쇠합니다.
설명용으로 재현한 AudioMixer 그룹 라우팅과 덕킹(Ducking) 설정입니다. SFX 전송량에 따라 BGM 볼륨을 감쇠합니다.

오디오 클립 용도별 임포트 최적화

모든 사운드를 기본값(Decompress On Load)으로 임포트하면 수십 MB의 BGM 파일이 메모리에 비압축 PCM으로 풀려 램을 낭비합니다. 길고 용량이 큰 BGM은 Vorbis 압축과 Compressed In Memory / Streaming으로 두고, 짧은 효과음만 Decompress On Load나 ADPCM을 적용하세요.

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;

public class AudioImportOptimizer : AssetPostprocessor
{
    private void OnPreprocessAudio()
    {
        AudioImporter importer = (AudioImporter)assetImporter;
        AudioImporterSampleSettings settings = importer.defaultSampleSettings;

        if (assetPath.Contains("/BGM/"))
        {
            importer.loadInBackground = true;
            settings.loadType = AudioClipLoadType.CompressedInMemory;
            settings.compressionFormat = AudioCompressionFormat.Vorbis;
            settings.quality = 0.7f;
        }
        else if (assetPath.Contains("/SFX/"))
        {
            settings.loadType = AudioClipLoadType.DecompressOnLoad;
            settings.compressionFormat = AudioCompressionFormat.PCM;
        }
        importer.defaultSampleSettings = settings;
    }
}
#endif

AudioMixer 볼륨 제어와 데시벨 로그 변환

UI 슬라이더의 선형 값(0.0 ~ 1.0)을 AudioMixer의 Volume 파라미터(-80dB ~ 0dB)에 그대로 넣으면 볼륨이 0.8만 되어도 소리가 급격히 줄어듭니다. Mathf.Log10을 이용한 데시벨 변환 공식을 사용해야 인간의 청각 인지에 맞는 자연스러운 감쇠가 일어납니다.

using UnityEngine;
using UnityEngine.Audio;

public class SoundVolumeController : MonoBehaviour
{
    [SerializeField] private AudioMixer mainMixer;

    public void SetMasterVolume(float linearSliderValue)
    {
        float clamped = Mathf.Clamp(linearSliderValue, 0.0001f, 1f);
        float dB = Mathf.Log10(clamped) * 20f;
        mainMixer.SetFloat("MasterVolume", dB);
    }

    public void SetBgmVolume(float linearSliderValue)
    {
        float clamped = Mathf.Clamp(linearSliderValue, 0.0001f, 1f);
        float dB = Mathf.Log10(clamped) * 20f;
        mainMixer.SetFloat("BGMVolume", dB);
    }
}

Ducking 효과로 대사 가청도 확보

AudioMixer에서 SFX 그룹에 Send 효과를 달고 BGM 그룹에 Duck Volume 효과를 추가하면, 중요한 효과음이나 캐릭터 보이스가 출력될 때 배경음이 자동으로 지정된 dB만큼 부드럽게 줄어들었다가 복구됩니다.

검증 범위

공식 문서 대조

검증일

Unity 공식 문서와 본문의 코드·절차를 대조해 공개 준비 상태로 전환했습니다. 별도 Unity 프로젝트나 실기기에서 직접 재현한 결과는 아니며, 특정 버전·기기 문의가 들어오면 해당 환경에서 후속 확인합니다.

확인한 공식 문서Unity AudioMixer 매뉴얼 ↗