我有一个绑定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不是一个正确的方式来使用组件。 –