inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

8강 아이템 시스템

GetController() 의 NULL

176

유정룡

작성한 질문수 1

0

왜 인지는 모르겠지만, 8강을 시작하면서
밑에 있는 코드의 GetController()에서 NULL을 반환하고 있어 게임 플레이가 안되던 문제가 있었습니다.

void AABCharacterPlayer::SetCharacterControl(ECharacterControlType NewCharacterControlType)
{
	UABCharacterControlData* NewCharacterControl = CharacterControlManager[NewCharacterControlType];
	check(NewCharacterControl);

	SetCharacterControlData(NewCharacterControl);

	APlayerController* PlayerController = CastChecked<APlayerController>(GetWorld()->GetFirstPlayerController());
	if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer()))
	{
		Subsystem->ClearAllMappings();
		UInputMappingContext* NewMappingContext = NewCharacterControl->InputMappingContext;
		if (NewMappingContext)
		{
			Subsystem->AddMappingContext(NewMappingContext, 0);
		}
	}

	CurrentCharacterControlType = NewCharacterControlType;
}

아직 Pawn이 컨트롤러를 얻은 시점이 아니라서 NULL 값으로 반환된다고 합니다.

 

GetWorld()->GetFirstPlayerController()를 호출해서 컨트롤러를 반환할수 있던데, Pawn이 컨트롤러를 얻은 시점이 언제인가요?

unreal-engine ue-blueprint 언리얼-c++

답변 1

0

이득우

컨트롤러가 Pawn을 빙의하는 시점은 OnPossess이고, 이 함수에서 폰의 PossessedBy를 호출해서 빙의되는 시점을 폰에게 알려줍니다. 즉 질문에 대한 답은 PossessedBy함수를 사용하시면 됩니다.
그런데 SetCharacterControl 함수는 BeginPlay에서 호출되지 않나요? 싱글플레이라면 일반적으로 컨트롤러와 폰 셋업이 다 끝난상황인데 널이 나온다면 게임 설정이나 시작지점이 잘못되어 빙의가 안된게 아닌가 싶습니다.

void APlayerController::OnPossess(APawn* PawnToPossess)
{
	if ( PawnToPossess != NULL && 
		(PlayerState == NULL || !PlayerState->IsOnlyASpectator()) )
	{
		const bool bNewPawn = (GetPawn() != PawnToPossess);

		if (GetPawn() && bNewPawn)
		{
			UnPossess();
		}

		if (PawnToPossess->Controller != NULL)
		{
			PawnToPossess->Controller->UnPossess();
		}

		PawnToPossess->PossessedBy(this);
                ....
}

 

1

유정룡

언리얼의 플레이 모드가 Simulate로 돼있어서 생긴 이슈였습니다!
Selected Viewport로 변경하니 잘 나옵니다 감사합니다!

0

이득우

아, 그런 경우도 있겠군요

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

0

42

2

12강 행동트리에서 질문이 있습니다.

0

51

1

위젯 사이즈랑 위치 질문드려요.

0

81

3

행동트리의 데코레이션 관련하여 질문이 있습니다.

0

93

3

VS 2026 의 문제일까요?

0

478

2

에셋참조 블루프린트질문

0

67

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

95

3

캐릭터가 움직이지 않습니다.

0

178

4

쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.

0

62

2

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

0

94

2

7강에 나오는 생성자에 대해서 궁금합니다.

0

78

2

6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.

0

73

2

3강을 마무리 하며, 카메라가 움직이지 않습니다.

0

70

2

Use Controller Rotation 옵션값이 궁금합니다.

0

83

2

3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.

0

64

2

PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.

0

78

2

13강 UpdateStat 부분에서 문제를 겪고 있습니다.

0

63

2

BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.

0

64

1

콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점

0

72

2

CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.

0

114

2

언리얼 공부방법에 대해 질문드립니다.

0

85

2

4강 에서 이상한 그림자가 남습니다.

0

46

1

2강에서 카메라 회전안되시는분 참고

2

89

2