이번 포스트에서는 언리얼 엔진에서 기존에 사용하던 구형 입력 시스템을 대체하는
언리얼 5.1부터 제공되는 향상된 입력 시스템(Enhenced Input System)에 대해 알아보겠습니다.
1) 간단한 정리
향상된 입력 시스템은 언리얼 5.1부터 사용할 수 있으며 기존의 구형 입력 시스템을 대체합니다.
장점으로는 사용자의 입력 설정 변경에 유연하게 대처할 수 있으며
사용자의 입력을 구형 입력 시스템에서 하듯이 기존의 InputComponent를 체크하는 과정에서 전부 처리하는 것이 아닌
총 4가지 단계로 세분화하고 각 설정을 독립적인 애셋으로 대체할 수 있다는 점입니다.
2) 처리 절차
향상된 입력의 처리 절차는 다음과 같습니다.
3) 향상된 입력을 통해 얻는 이점
그렇다면 향상된 입력을 통해서 얻는 이점은 무엇인지 한번 보겠습니다.
첫번째로, 입력에 대한 처리를 PlayerController와 Pawn이 아닌 매핑 컨텍스트에서 처리합니다.
두번째로, 컴파일 시점에서 입력값을 변경할 수 있습니다.
마지막으로, 게임 로직에서는 함수만 처리하면 되므로 부담이 적어집니다.
이렇듯 향상된 입력을 사용하면 게임 로직의 부담을 덜면서 유연한 입력의 처리가 가능해집니다.
이제 예제를 통해 향상된 입력의 사용방법을 알아보겠습니다.
사용예제는 이전의 포스트에서 구형 입력으로 처리한 함수들을 향상된 입력으로 수정해보겠습니다.
4) 예제
향상된 입력을 사용하기 위해서는 먼저 Input Action과 Input Mapping Context를 만들어주어야 합니다.
언리얼 에디터에서 우클릭 Input -> Input Action 과 Input Mapping Context를 선택하여 만들겠습니다.
각각의 구성은 다음과 같습니다.
이때 IA_Move 시리즈에는
Value Type을 float로 설정하고
또한 MoveBackward와 MoveLeft에는 추가적으로 Modifiers에 Negate옵션을 설정하여 반대값을 맞춰주었습니다.
IA_Print의 경우, Value Type을 bool로 설정하였습니다.
이제 입력과 입력값을 매핑하는 Input Mapping Context를 설정해주어야 합니다.
위와 같이 매핑시켜주었습니다.
이제 로직으로 넘어가보겠습니다.
위와 같은 구간을 추가하여 블루 프린트에서 설정할 수 있게 추가하였습니다.
또한 콜백 함수도 위와 같이 변경하여 입력의 새로운 리턴값에 대응할 수 있게 변경하였습니다.
cpp 파일에는 위와 같은 헤더파일을 포함하여 작성합니다.
게임의 시작시에 호출되는 BeginPlay()에서는 위와 같이 로직을 수행합니다.
입력을 설정하는 SetupPlayerInputComponent에서는 위와 같이 작성하였습니다.
각 입력에 맞는 리턴값의 자료형을 받게끔 수정하였습니다.
입력한 키의 이름을 가져오는 PrintMessage의 경우 위와 같은 로직으로 구성하였습니다.
저렇게 사용하였다 하고 봐주시면 되겠습니다.
이제 실행결과를 보겠습니다.
향상된 입력은 입력을 유동적으로 설정하는데 있어서 매우 유용합니다.
이는 설계자뿐만이 아닌 사용자가 입력을 자신에게 맞게 변경하는데 있어서도 매우 유용하게 사용가능합니다.
이 포스트까지하여 언리얼 엔진에서 입력을 처리하는 두 가지 방식에 대해 알아보았습니다.
사용하는 언리얼 엔진의 버전이나 프로젝트의 구성에 맞게 알맞은 방식을 사용해주시면 되겠습니다.
'언리얼 > 언리얼 C++' 카테고리의 다른 글
C++ 클래스와 블루 프린트의 연결 (0) | 2024.10.06 |
---|---|
커스텀 로그 (0) | 2024.10.05 |
언리얼 구형 입력 시스템 (0) | 2024.09.21 |
언리얼 엔진의 메모리 관리 (3) ~ 패키지 (0) | 2024.08.18 |
언리얼 엔진의 메모리 관리 (2) ~ 직렬화 (0) | 2024.08.11 |