我有一個綁定OnAudioFinished委託的問題。虛幻引擎崩潰與AddDynamic
已經搜索了一段時間,但還沒有找到好答案。我跟着這個answer!
我的代碼編譯沒有任何錯誤可言,但是當我的項目加載它與此錯誤崩潰:
UE4Editor_!TBaseDynamicMulticastDelegate<FWeakObjectPtr,void>::__Internal_AddDynamic<UAudioController>() [d:\path\delegates\delegatesignatureimpl.inl:1140]
UE4Editor_Project!UAudioController::UAudioController() [d:\path\private\audiocontroller.cpp:17]
UE4Editor_Project!InternalConstructor<UAudioController>()
我所不解的是,構造擊碎我的引擎,但我不知道爲什麼這是否發生。這是我負責這個綁定的代碼。
.H
static UAudioComponent* AudioComponent;
public:
UAudioController();
void SoundFinished();
的.cpp
UAudioController::UAudioController()
{
AudioComponent->OnAudioFinished.AddDynamic(this, &UAudioController::SoundFinished);
}
void UAudioController::SoundFinished()
{
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, TEXT("Audio Finished trigger"));
}
您的調試器將成爲您這類問題的最好朋友。這就是說,我的猜測是AudioComponent在調用AddDynamic時尚未初始化。 – Sneftel
還要確保你的'SoundFinished'功能是UFUNCTION。 – JKovalsky
請檢查我編輯的答案。使用'NewObject <...>()'(正如你在下面註釋中提到的)是definitelly不是一個正確的方式來使用組件。 –