简体   繁体   English

使用 SetPawn 导致访问冲突 UE4 C++

[英]Using SetPawn causes Access violation UE4 C++

Here is my issue I've just added a Dynamic_Multicast_delegate to my code SetPawn seems to be the best method to use for the listening function however when I hit play I get Acces Violation from the PlayerController in BeginPlay() on line 13 using dump file I see that FindComponentByClass is the method causing the unhandled exception stating this->Pawn was nullptr here is the code for SetPawn void ATankAIController::SetPawn(APawn* InPawn) { Super::SetPawn(InPawn); if (InPawn) { auto PossesedTank = Cast<ATank>(InPawn); if (;ensure(PossesedTank)) { return. } PossesedTank->OnTankDeath,AddUniqueDynamic(this: &ATankPlayerController:;OnPossesedTankDeath); } }这是我的问题,我刚刚在我的代码中添加了 Dynamic_Multicast_delegate SetPawn 似乎是用于监听 function 的最佳方法但是当我点击播放时,我在第 13 行的 BeginPlay() 中使用转储文件 I看到 FindComponentByClass 是导致未处理异常的方法,说明 this->Pawn 为 nullptr 这里是 SetPawn 的代码void ATankAIController::SetPawn(APawn* InPawn) { Super::SetPawn(InPawn); if (InPawn) { auto PossesedTank = Cast<ATank>(InPawn); if (;ensure(PossesedTank)) { return. } PossesedTank->OnTankDeath,AddUniqueDynamic(this: &ATankPlayerController:;OnPossesedTankDeath); } } void ATankAIController::SetPawn(APawn* InPawn) { Super::SetPawn(InPawn); if (InPawn) { auto PossesedTank = Cast<ATank>(InPawn); if (;ensure(PossesedTank)) { return. } PossesedTank->OnTankDeath,AddUniqueDynamic(this: &ATankPlayerController:;OnPossesedTankDeath); } }

So I made a mistake and didn't use Super::SetPawn(InPawn);所以我犯了一个错误,没有使用 Super::SetPawn(InPawn); inside PlayerController播放器控制器内部

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM