티스토리 뷰

Input Config Data Asset

기존의 Gameplay Ability System은 원래 입력을 Ability에 직접 바인딩하는 기능을 제공했다.

버튼을 누르면 Ability가 자동으로 해당 입력을 받아 활성화되거나 원하는 동작을 수행하나, 이 방식은 입력용 Enum을 만들어 각 Ability에 Eunum 값을 연결하는 구조였다.

하지만 입력 Enum이 하드코딩되며, 입력 변경이 어려운 문제가 존재한다.

 

지금의 언리얼은 Enhanced Input을 사용하며, 여기서는 입력(Aciton) -> Input Mapping Context -> 키와 연결 되는 구조를 사용한다.

즉, Input Action을 통해 원하는 방식으로 Ability를 활성화하도록 구현한다.

따라서 이번 강의는 Enhancec Input + GAS를 연결하는 입력 시스템을 이해하기 쉽고 단순하면서도 충분한 유연성은 유지하도록 만들 것이다.

이를 위해 입력 자체를 Ability에 연결하지 않고, 중간에 Gameplay Tag를 둘 것이다.

 


 

가장 먼저 Input Action과 Gameplay Tag를 연결하는 Data Asset을 만든다.

Data Asset을 사용하는 이유는, 입력을 코드에 적지 않고 데이터로 관리하기 위해서이다.

 

그리고 Input Action 하나를 표현하는 구조체를 먼저 생성해줄 것이다.

실제 Enhanced Input Action과, Inptu Acion과 연결되는 Gameplay Tag 변수를 작성힌다.

 

그리고 위 구조체 값(InputAction과 GameplayTag 매핑 정보)을 담아두는 배열을 선언한다.

이어서 InputConfig를 사용할 때 해당 배열을 직접 뒤질 필요는 없어야 한다.

이를 위해 추가적으로 Tag를 기반으로 원하는 InputAction을 찾기 위한 함수를 만들어 줄 것이다.

 

이제 함수에서는 AbilityInputActions 배열을 순회한다.

InputAction이 존재하고, Tag가 일치하면 해당 InputAction을 반환한다.

못 찾은 경우에는 Error 문구 또는 nullptr를 반환한다.

 

그리고 GameplayTag를 관리하는 AuraGameplayTags 헤더 파일에 입력용 InputTag들을 선언해 준다.

이어서 CPP 파일에서 기존 GameplayTag를 등록했던 방식과 동일하게 InputTag들도 등록해 준다.

 

컴파일 후 InputTag가 등록되었는지 확인해주자.

 

이제 실제 사용할 InputAction도 만들어 줄 것이다.

이때 해당 값들은 단순히 버튼의 눌림 여부만 확인하면 되므로, Value Type은 모두 Axis1D로 설정한다.

 

만들어준 InputAcion은 모두 MappingContext에 등록해주자.

 

최종적으로는 Aura Input Config를 기반으로 Data Asset을 만들고, 여기기서 AbilityInputActions 배열에 사용할 InputAction과 각 InputAction에 대응되는 InputTag를 함께 매핑해준다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함