SetupPlayerInputComponent 함수에 대한 전반적 이해 질문...
void AABCharacterPlayer::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
// 반드시 UInputComponent를 가져올 수 있도록 CastChecked를 사용해서 없으면 에러 발생되게 함
UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(PlayerInputComponent);
...
}SetupPlayerInputComponent 라는 함수와 매개변수인 UInputCompononent가 무엇인지 전체적인 그림이 잘 그려지지 않습니다....
지금은 향상된 입력을 수행하는 녀석이라고 이해하고 있는데 보니까 BeginPlay() 하기전에 실행되기도 하고.....
UInputCompononent가 어디에서 온건지, 커스텀으로 에디터에서 만들고 등록할 수 있는건지. 전반적인 이해가 필요한데요.
이 함수와 매개변수에 대한 자세한 건 나중에 또 나오나요??
답변 1
2
음.. 언리얼 엔진의 입력 시스템은 꽤나 복잡한 구조를 가지고 있습니다.
Part2 강의는 콘텐츠 제작에 중점을 두다보니 이런 프레임웍의 메카니즘을 깊숙히 설명하는데 할애하지는 않았습니다. 콘텐츠 제작하는데 있어서 해당 함수에서 초기 입력 값 세팅을 진행한다 정도로 이해하시면 충분합니다. 이 함수는 언리얼 엔진이 정해준 프레임웍이고 이런 정해진 함수가 상당히 많습니다.
그런데 외워서 사용하는 방식이 답답하고, 내부적으로 어떻게 동작하는지 궁금하다면 소스코드를 직접 보시면 됩니다.
마법의 단축키 Ctrl+Shift+F키로 SetupPlayerInputComponent를 검색해보세요.
가장 하단에 Pawn.cpp 소스에서 이 함수를 호출하는 것을 볼 수 있는데. 
더블클릭해 들어가면 void APawn::PawnClientRestart() 함수에서 프로젝트 설정에 등록된 입력 컴포넌트 클래스 정보를 사용해 입력 컴포넌트 언리얼 오브젝트를 생성하고 SetupPlayerInputComponent 함수를 호출하는 것을 볼 수 있습니다.
void APawn::PawnClientRestart()
{
Restart();
APlayerController* PC = Cast<APlayerController>(Controller);
if (PC && PC->IsLocalController())
{
// Handle camera possession
if (PC->bAutoManageActiveCameraTarget)
{
PC->AutoManageActiveCameraTarget(this);
}
// Set up player input component, if there isn't one already.
if (InputComponent == nullptr)
{
InputComponent = CreatePlayerInputComponent();
if (InputComponent)
{
SetupPlayerInputComponent(InputComponent);
InputComponent->RegisterComponent();
if (UInputDelegateBinding::SupportsInputDelegate(GetClass()))
{
InputComponent->bBlockInput = bBlockInput;
UInputDelegateBinding::BindInputDelegatesWithSubojects(this, InputComponent);
}
}
}
}
}
5.1버전의 경우 같은 규약을 가지지만 기능이 강화된 EnhancedInputComponent를 사용하도록 기본 설정되어 있습니다. 이를 또 설명하자면...
궁금한 만큼 소스코드를 물고 들어가면 해답을 얻을 수 있으니 한번 연습해보시기 바랍니다.
무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.
0
42
2
12강 행동트리에서 질문이 있습니다.
0
51
1
위젯 사이즈랑 위치 질문드려요.
0
81
3
행동트리의 데코레이션 관련하여 질문이 있습니다.
0
93
3
VS 2026 의 문제일까요?
0
479
2
에셋참조 블루프린트질문
0
67
2
애님 몽타주 콤보 관련질문
0
70
2
ThirdPerson CDO 에러가 생깁니다.
0
95
3
캐릭터가 움직이지 않습니다.
0
179
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





