2017-05-08 57 views
0

我不能完全理解它,所以我在這裏問。我正在用下面的函數生成AudioComponent。它附加了10秒SoundCue。然後我在2秒鐘後暫停,並將延時設置爲30秒。然後我想解除我的聲音。問題是,我的調度員在它之前觸發,我的聲音甚至不能被取消暫停。它被破壞了嗎?有什麼辦法來防止它?聲音實際完成之前OnSoundFinished觸發器

UAudioComponent* MyAudioClass::LatentSound2D(UObject* WorldContextObject, struct FLatentActionInfo LatentInfo, class USoundBase* Sound, float VolumeMultiplier, float PitchMultiplier, float StartTime, class USoundConcurrency* ConcurrencySettings, bool bPersistAcrossLevelTransition) 
{ 

    MyAudioClassObject= NewObject<MyAudioClass>();//handle needed to bind delegate 
    UAudioComponent* AudioComponent = UGameplayStatics::CreateSound2D(WorldContextObject, Sound, VolumeMultiplier, PitchMultiplier, StartTime);//Create AudioComponent 
    MyAudioClassObject->BindDelegate(AudioComponent);//Bind delegate to AudioComponent 
    AudioComponent->bAutoDestroy = false; 
    AudioComponent->bAllowAnyoneToDestroyMe = false; 
    AudioComponent->AddToRoot(); 
    AudioLatentBind(WorldContextObject, LatentInfo, AudioComponent); //add latent action for this audio component (wait till it ends) 
    return AudioComponent; 
} 

代表我綁定的OnAudioFinished。如果有什麼不清楚的地方,請讓我知道。我真的需要它幫助:(這是怎麼看起來像藍圖

enter image description here

+0

你可以*至少*告訴我們你正在使用哪個庫提供這些類...我們不介意讀者。 –

+0

I我只是檢查了這一點,似乎我的AudioComponent得到停止,這就是爲什麼OnAUdioFinished射擊。但是我不知道我怎麼能阻止這個stop()調用。 –

+0

當然 '的#include 「MyProjectCodeFunctionLibrary.h」 的#include 「GameFramework/Actor.h」 的#include 「Object.h」 的#include 「AudioDevice.h」 的#include 「ActiveSound.h」 的#include「LatentActions.h 「 #include」MyAudioClass.generated.h「' 這些都是我包含的文件。適合亂七八糟我很新,在這裏真的不知道什麼信息對其他人是有價值的 –

回答

0

我想CreateSound2D是UI的聲音,因此是一種「發射後不管」的行動。因爲要創建一個AudioComponent,你不能直接設置聲音並播放AudioComponent而不是使用CreateSound2D嗎?

相關問題