播放聲音
-
PlaySoundAtLocation()
USoundCue* HitSound = LoadObject<USoundCue>(this, TEXT("SoundCue'/Game/Demo_Drone/Sound/explore_Cue.explore_Cue'")); if (HitSound) { UGameplayStatics::PlaySoundAtLocation(this, HitSound,SweepResult.Location); }
-
PlaySound2D()
UGameplayStatics::PlaySound2D(GetWorld(), HitSound)
-
使用組件
- static UAudioComponent* SpawnSound2D()
- static UAudioComponent* CreateSound2D()
- static UAudioComponent* SpawnSoundAtLocation()
- static UAudioComponent* SpawnSoundAttached()
-
slate 中播放聲音
FSlateApplication::Get().PlaySound(MenuStyle->MenuBGM);
控制音量
-
加載USoundCue資源 直接改變 USoundCue::VolumeMultiplier
FSlateSound 資源亦可以強轉
USoundCue* sound= Cast<USoundCue>(MenuStyle->StartGameSound.GetResourceObject()); sound->VolumeMultiplier = SoundVolume;
-
通過 FAudioDevice、USoundMix、USoundClass
- Conten 下創建 USoundClass 、USoundMix資源
- USoundMix資源屬性中添加 Sound Class Effects 元素,元素為剛創建的USoundClass 資源
- Sound Wave 資源屬性中設置 Sound Class 為剛創建的 USoundClass
- C++ 實現
// .h定義 class USoundMix* SoundMix; class USoundClass* MusicClass; class USoundClass* SoundClass; class FAudioDevice* AudioDevice; //.cpp 調用 初始化 MusicClass = LoadObject<USoundClass>(nullptr,TEXT("SoundClass'/Game/Blueprints/Sound/MusicClass.MusicClass'")); SoundClass = LoadObject<USoundClass>(nullptr,TEXT("SoundClass'/Game/Blueprints/Sound/SoundClass.SoundClass'")); SoundMix = LoadObject<USoundMix>(nullptr,TEXT("SoundMix'/Game/Blueprints/Sound/SoundMix.SoundMix'")); AudioDevice = GEngine->GetMainAudioDeviceRaw(); AudioDevice->PushSoundMixModifier(SoundMix); //.cpp 調用 改變音量 AudioDevice->SetSoundMixClassOverride(SoundMix, MusicClass, MusicVolume, 1.f, 0.2f, false); AudioDevice->SetSoundMixClassOverride(SoundMix, SoundClass, SoundVolume, 1.f, 0.2f, false);