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();
통화 당 UE에서
UAudioController::UAudioController()
{
AudioComponent->OnAudioFinished.AddDynamic(this, &UAudioController::SoundFinished);
}
void UAudioController::SoundFinished()
{
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, TEXT("Audio Finished trigger"));
}
디버거가 이와 같은 문제에 대해 가장 친한 친구가 될 것입니다. 즉, AddDynamic을 호출 할 때 AudioComponent가 아직 초기화되지 않은 것 같습니다. – Sneftel
또한'SoundFinished' 함수가 UFUNCTION인지 확인하십시오. – JKovalsky
편집 된 답변을 확인하십시오. 'NewObject <...>()'(아래의 주석에서 언급했듯이)을 사용하는 것은 분명히 구성 요소로 작업하는 올바른 방법이 아닙니다. –