각 입력의 입력 방식을 결정하는 InputAction (입력액션)

입력액션들을 한데에 모아 키를 배정하고, 값을 받는 Input Mapping System

레벨에서 실질적으로 연결을 해주는 PlayerController class

결국 PlayerController를 상속받은 블루프린트를 만들어서 매핑을 직접 해줘야한다.

그리고 생성자에서 등록을 해줘야지 비로소 런타임에서 입력을 받을 수 있게된다.
void ASpartaPlayerController::BeginPlay()
{
Super::BeginPlay();
UEnhancedInputLocalPlayerSubsystem* SubSystem = GetLocalPlayer()->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>();
SubSystem->AddMappingContext(InputMappingContext, 0);
}
인풋을 따로 관리하며 공들여서 만든 시스템이라고 생각은 들지만, 그렇기에 복잡도는 다소 올라갔다고 생각이 든다.
아무래도 입력 쪽이 게임의 가장 중요한 요소가 될 수 있으면서도 한번 개발을 해두면 프로젝트를 바꾸지 않는 이상에야 그다지 다시 만질 일이 없게 되는 부분이기도 하다. 심지어 모바일 프로젝트라면 가상 조이스틱 외에는 더 더욱 만질 일이 없는 부분이다.
그렇기 때문에 입력 쪽 개발 기록 잘 해두어야 하지 않을까 싶다.