작성
·
771
0
BeginPlay 함수를 오버라이딩 하실 때
void AABCharacterPlayer::BeginPlay()
{
Super::BeginPlay();
APlayerController* PlayerController = CastChecked<APlayerController>(GetController());
if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController))
{
Subsystem->AddMappingContext(DefaultMappingContext, 0);
// Subsystem->RemoveMappingContext(DefaultMappingContext);
}
}
와 같이 정의하셨는데, ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController) 이 함수에서 인수가 일치하지 않는다는 오류가 발생합니다. 선생님 코드를 보면 동일한 코드임에도 실행이 잘 되던데, 저는 이 부분 때문에 빌드가 안되고 있습니다.
인수가 ULocalPlayer가 들어와야 한다고 해서, APlayerController이 아닌 ULocalPlayer로 캐스팅도 해봤는데, 런타임에서 바로 터집니다.
혹시 어느 부분이 문제일까요?
모듈에는 EnhancedInput 추가했고, 로그에 해당 오류 말고 다른 오류가 발생하고 있지는 않습니다.
답변 3
2
ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController) 의 인수를 PlayerController->GetLocalPlayer() 로 변경하여 문제는 해결되긴 했습니다. 다만, 올바른 방법인지는 잘 모르겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
비슷한 문제를 겪고 계신 다른 수강생의 질문과 강사님의 답변을 찾았습니다. 해당 내용이 오의현님의 질문과 관련이 있을 수 있으니 참고해 보시기 바랍니다.
강의 제목: 이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
질문 제목: 섹션1-캐릭터와 입력 시스템에서 입력 관련 오류 질문 입니다.
답변: 입력 관련 경로 문제로 인한 오류로 추정되며, 올바른 경로 설정이 필요합니다.
추가적으로 강사님께서는 GitHub에 있는 최종 버전의 소스코드를 참고하여 문제를 해결하시기를 권장하셨습니다. 해당 내용을 참고하셔서 문제를 해결해 보시기 바랍니다.
아.. 제가 수업 전에 다운 받았던 거라, 5.2.1 버전으로 그냥 진행하고 있었는데 버전의 차이였군요..
5.1로 설치했습니다!