PART 03 · 강의 1/3

Sound Class 계층

사운드를 논리적으로 그룹핑하고 볼륨/피치를 계층적으로 제어하는 시스템

01

Sound Class란?

유사한 사운드를 그룹으로 묶어 일괄 제어하는 에셋

Sound Class(USoundClass)는 사운드를 논리적 카테고리로 분류하는 에셋입니다. "SFX", "Music", "Dialogue", "UI" 등으로 사운드를 그룹핑하면, 해당 그룹의 볼륨, 피치, 우선순위 등을 일괄적으로 제어할 수 있습니다.

Sound Class 주요 프로퍼티

프로퍼티타입설명
Volumefloat이 클래스의 기본 볼륨 배수 (0.0 ~ 1.0)
Pitchfloat이 클래스의 기본 피치 배수
Low Pass Filter Frequencyfloat로우패스 필터 컷오프 (Hz)
Default SubmixUSoundSubmix*이 클래스의 사운드가 라우팅될 기본 Submix
Loading Behavior OverrideESoundWaveLoadingBehavior로딩 동작 오버라이드
bAlwaysPlayboolVoice 한도 초과 시에도 항상 재생
bApplyAmbientVolumesboolAmbient Zone 볼륨 영향 받을지 여부
Sound Class vs Submix

Sound Class는 "논리적 분류"이고, Submix는 "신호 라우팅 경로"입니다. Sound Class의 Default Submix를 설정하면 두 시스템이 연결됩니다. Sound Class로 분류하고, Submix로 이펙트를 적용하는 것이 표준 워크플로우입니다.

02

계층 구조 설계

부모-자식 관계로 Sound Class를 조직하는 방법

Sound Class는 트리 구조로 계층을 형성합니다. 부모 클래스의 볼륨 변경은 모든 자식 클래스에 영향을 줍니다. 이를 통해 "전체 SFX 볼륨" 같은 광범위한 제어가 가능합니다.

권장 Sound Class 계층 구조

Sound Class Hierarchy
Master (Volume: 1.0)
  ├─ SFX (Volume: 1.0)
  │   ├─ Weapons
  │   ├─ Footsteps
  │   ├─ Impacts
  │   └─ Ambient
  ├─ Music (Volume: 0.8)
  │   ├─ BGM
  │   └─ Stinger
  ├─ Dialogue (Volume: 1.0, bAlwaysPlay: true)
  │   ├─ NPC
  │   └─ Narration
  └─ UI (Volume: 1.0)
Blueprint - Sound Class 할당
// Sound Wave에 Sound Class 지정 // 1. Content Browser에서 Sound Wave 선택 // 2. Details > Sound Class 드롭다운에서 선택 // C++에서 런타임 Sound Class 변경 USoundWave* Wave = ...; Wave->SoundClassObject = SFXSoundClass; // Blueprint에서 사운드 재생 시 Sound Class 적용됨 // Sound Class의 Volume이 0.5이면, 모든 SFX가 절반 볼륨으로 재생
03

옵션 메뉴 볼륨 슬라이더 구현

Sound Class를 활용한 게임 설정 UI 연동

게임 옵션의 "마스터 볼륨", "효과음 볼륨", "음악 볼륨" 슬라이더는 Sound Class와 Sound Mix를 통해 구현합니다.

C++ - Sound Class Volume Control
// Sound Mix를 통해 Sound Class 볼륨 조절 void UMyAudioSettings::SetSFXVolume(float Volume) { if (FAudioDevice* AudioDevice = GEngine->GetMainAudioDevice()) { // Sound Mix Override로 Sound Class 볼륨 설정 AudioDevice->SetSoundMixClassOverride( SettingsSoundMix, // USoundMix* (설정 전용 Mix) SFXSoundClass, // USoundClass* (SFX 클래스) Volume, // 볼륨 배수 (0.0 ~ 1.0) 1.0f, // 피치 배수 0.2f, // 페이드 인 시간 true // Submix에도 적용 ); } } // 게임 시작 시 Sound Mix 활성화 void UMyAudioSettings::InitAudioSettings() { UGameplayStatics::PushSoundMixModifier( this, SettingsSoundMix); }
볼륨 설정 영속화

볼륨 설정을 UGameUserSettings 또는 SaveGame에 저장하고, 게임 시작 시 로드하여 Sound Mix에 재적용하세요. Sound Class 볼륨 자체는 에셋이므로 런타임 변경이 영속되지 않습니다.

04

Sound Class와 MetaSounds 연동

MetaSound Source에서 Sound Class를 활용하는 방법

MetaSound Source 에셋에도 Sound Class를 지정할 수 있습니다. MetaSound Source의 Details 패널에서 Sound Class 프로퍼티를 설정하면, 해당 Sound Class의 볼륨/믹싱 규칙이 적용됩니다.

설정 위치적용 대상우선순위
MetaSound Source > Sound Class 에셋 기본값 낮음
Audio Component > Sound Class Override 인스턴스별 오버라이드 높음
PlaySoundAtLocation > 파라미터 일회성 재생 시 높음
Sound Class 상속

자식 Sound Class는 부모의 볼륨/피치를 곱셈으로 상속합니다. Master(0.8) > SFX(0.9) > Weapons(1.0)이면, 최종 Weapons 볼륨은 0.8 * 0.9 * 1.0 = 0.72입니다.

SUMMARY

핵심 요약

  • Sound Class는 사운드를 논리적 카테고리로 분류하여 볼륨/피치를 일괄 제어하는 에셋이다
  • 트리 구조의 부모-자식 계층으로 조직하면, 부모 볼륨 변경이 모든 자식에 전파된다
  • 옵션 메뉴의 볼륨 슬라이더는 Sound Mix + Sound Class 조합으로 구현한다
  • Sound Class의 Default Submix를 설정하면 자동 라우팅이 적용된다
  • 자식 클래스는 부모의 볼륨을 곱셈으로 상속한다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Sound Class 계층 구조 설계

Master > SFX, Music, Voice, UI의 4가지 Sound Class 계층을 만드세요. SFX 하위에 Footstep, Weapon, Environment 서브클래스를 추가하고, 각 클래스에 적절한 Volume과 Priority를 설정하세요.

실습 2: Sound Class 볼륨 제어 구현

옵션 메뉴에서 Master, SFX, Music, Voice 볼륨을 슬라이더로 제어하는 UI를 구현하세요. USoundMix::SetSoundMixClassOverride()를 사용하여 Sound Class별 볼륨을 실시간으로 조절하세요.

심화 과제: 다이나믹 사운드 클래스 관리 시스템

게임 상태에 따라 Sound Class의 Volume과 Pitch를 자동으로 조절하는 시스템을 구현하세요. 전투 시 Music 볼륨 증가, 대화 시 SFX 볼륨 감소, 메뉴에서 Game Sound 뮤트 등의 규칙을 Sound Mix로 관리하세요.