GetController() returns nullptr while GetPlayerController() works properly

Makes perfect sense. Your Character doesn’t have a Controller at Character::BeginPlay, you can only get your Characters Controller after OnPossessed(). When you get Endplay() the Character most likely has been Unpossessed, so no Controller there either.
“GetWorld()->GetFirstPlayerController()” is giving you the login Controller, this Controller may or may not have a Character possessed, depends on when you call it.

1 Like