글을 쓰는 목적
UE4에서 사운드 시스템을 구현하려고 하는데 사운드를 작업한 적이 별로 없고, C++로된 참고 자료가 별로 많지 않아서 이렇게 기록을 남깁니다.
작업 환경
UE4.26
UE4 사운드 구조
크게 Sound Class, Sound Mix, Sound Cue 로 구성 되는데 Sound Class는 사운드 카테고리, Sound Mix는 Sound Class를 관리하는 녀석으로 Pitch(재생 속도), Volume(소리 크기)를 관리한다. Sound Cue는 최종적으로 사운드를 내는데 사용하며 Sound Cue에 Sound Class를 설정하여 각각 조절 할 수 있다. 예를 들어 마스터 클래스 밑에 배경 음악 클래스와 이펙트 클래스가 있다고 하자, 플레이하고자 하는 사운드 2개가 있는데 하나는 배경음악 클래스에 속한 음악, 나머지 하나는 이펙트 사운드 클래스에 속한 음악이 재생 중인데 배경음악의 Sound Class의 설정을 바꿔 사운드 믹스에 반영하면 배경음악의 소리 불륨이 바뀔 수 있다. 언리얼 도큐먼트에 잘 정리 되어있다.
https://docs.unrealengine.com/4.27/ko/WorkingWithAudio/Overview/
사운드 볼륨 줄이기
UGameplayStatics에서 제공하는 SetSoundMixClassOverride와 PushSoundMixModifier를 통해 볼륨을 조절 할 수 있다.
void UTextSoundPlayer:SetVolume(UWorld* inWorld, USoundMix* inMix, USoundClass* inSoundClass, float inValue)
{
UGameplayStatics::SetSoundMixClassOverride(inWorld, inMix, inSoundClass, inValue);
UGameplayStatics::PushSoundMixModifier(inWorld, inMix);
}
https://www.parallelcube.com/2017/12/18/add-volume-control/
사운드가 멈추는 현상
위의 코드를 적용 후 사운드를 큐를 플레이하면 멈추는 경우가 있는데 그 이유는 사운드 큐의 VirtuallizationMode가 PlayWhenSilent가 아니라서 그렇다 사운드 큐의 VirtualizatonMode를 변경해주면 음소거에서도 정상 플레이 된다.
USoundCue* sound = Cast<USoundCue>(findSoundData.SoundCue.TryLoad());
if (sound)
{
sound->VirtualizationMode = EVirtualizationMode::PlayWhenSilent;
UGameplayStatics::PlaySound2D(inWorld, sound);
}
https://forums.unrealengine.com/t/audio-components-dont-start-playing-if-the-volume-is-0/109887/5
'UE4' 카테고리의 다른 글
UE4 Android, iOS Battery, Wifi 정보 가져오기 (0) | 2021.10.27 |
---|---|
UE4 Localization (0) | 2021.10.13 |
UE4에서 에셋을 이동시 Freezing 이 나거나 깨지는 현상 해결 방법 (0) | 2021.09.23 |
UE4 Decal (0) | 2021.09.13 |
UE4 Define 지시문 (0) | 2021.09.09 |