Ich habe ein Problem mit der Bindung von OnAudioFinished Delegaten.Unreal Engine Absturz mit AddDynamic
Gesucht seit einiger Zeit, aber habe noch keine gute Antwort gefunden. Ich bin diesem answer gefolgt!
Mein Code kompiliert ohne Fehler überhaupt, aber wenn mein Projekt wird geladen es mit diesem Fehler abstürzt:
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>()
Was ich verstehe, ist, dass Konstruktor meinen Motor zermalmt, aber ich weiß nicht, warum ist das passiert. Hier ist mein Code, der für diese Bindung verantwortlich ist.
.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"));
}
Ihr Debugger wird Ihr bester Freund für solche Probleme sein. Das heißt, ich vermute, dass AudioComponent beim Aufruf von AddDynamic noch nicht initialisiert ist. – Sneftel
Stellen Sie außerdem sicher, dass Ihre Funktion 'SoundFinished' UFUNCTION ist. – JKovalsky
Überprüfen Sie meine bearbeitete Antwort. Verwenden von 'NewObject <...>()' (wie Sie im Kommentar unten erwähnt) ist definitiv nicht eine richtige Art, mit Komponenten zu arbeiten. –