범용 UI 플러그인 은 향상된 입력 액션을 제한적으로 지원합니다.
UE 5.2 기준으로, 향상된 입력 지원은 범용 UI의 다른 기능만큼 철저하게 테스트되지 않았습니다. 현재 이 기능을 사용하는 타이틀은 출시하지 않을 것을 권장합니다.
1. 필수 설정
이 페이지에서는 범용 UI에 대한 다음 설정 단계를 수행했다고 가정합니다.
- 범용 UI(Common UI) 플러그인과 향상된 입력(Enhanced Input) 플러그인을 모두 활성화합니다.
- 뷰포트 클래스를 CommonGameViewportClient로 설정합니다.
- 수락(Accept)/뒤로(Back) 액션에 대한 InputData를 설정합니다.
2. 범용 UI에서 향상된 입력 활성화
범용 UI 플러그인과 향상된 입력 플러그인을 활성화한 후, 프로젝트 세팅(Project Settings) 을 엽니다. 게임(Game) > Common Input Settings 으로 이동해 Enable Enhanced Input Support 를 true 로 설정합니다. 이렇게 하면 두 플러그인이 커뮤니케이션할 수 있게 됩니다.
3. 범용 UI의 향상된 입력 액션 설정
향상된 입력 액션은 ongoing 이벤트와 triggered 이벤트 같은 특수 베리언트를 비롯하여 어디에나 입력 이벤트를 바인딩할 수 있습니다. 그러나 FaceButtonTop, 수락(Accept), 뒤로(Back) 등 대부분의 UI 액션 바인딩을 전역으로 바인딩하면 예상할 수 없는 시점의 사용자 입력으로 인해 의도치 않은 이벤트가 발생할 수 있으므로 이는 바람직하지 않으며 혼란을 가중시킵니다. 범용 UI는 일반 액션 을 사용해 이 문제를 해결합니다. 일반 액션은 UI 엘리먼트에 바운드되지만, 범용 UI에서 향상된 입력 이벤트를 트리거하지 않습니다.
범용 UI에서 향상된 입력 액션을 설정하려면, 다음 단계를 따릅니다.
-
콘텐츠 브라우저(Content Browser)에서 일반 입력 액션(Input Action) 을 생성합니다.
IA_UI_GenericAccept로 명명합니다.
-
입력 액션에 PlayerMappableKeySettings 를 추가합니다.
-
PlayerMappableKeySettings 의 세팅(Settings) 에서, ICommonMappingContextMetadataInterface를 구현하는 오브젝트로 메타데이터(Metadata) 필드를 설정합니다.
범용 UI 이외에도 입력 액션 메타데이터가 필요할 수 있습니다. 따라서 유연성을 위해
ICommonMappingContextMetadataInterface를 구현하는 클래스를 사용할 것을 권장합니다. -
콘텐츠 브라우저에서 우클릭한 다음 기타(Miscellaneous) > 데이터 에셋(Data Asset) 을 클릭해 데이터 에셋을 생성합니다.
-
ICommonMappingContextMetadataInterface를 구현하는 메타데이터 클래스를 데이터 에셋 클래스로 선택합니다. 메타데이터를 UI_IA_GenericMetadata로 명명합니다. UCommonMappingContextMetadata를 디폴트로 사용해도 되고, 커스텀 에셋 클래스를 사용해도 됩니다.
-
UI_IA_GenericMetadata를 열고, 세팅을 다음과 같이 편집합니다.
-
Is Generic Input Action: True
-
Per Action Enhanced Input Metadata: IA_UI_GenericAccept
-
Nav Bar Priority: 10
Is Generic Input Action 을 체크해 범용 UI가 입력 액션을 브로드캐스트하는 것을 방지합니다.
이 데이터 에셋은 범용 UI 액션 데이터를 설정할 수 있는 메타데이터 오브젝트를 제공합니다. 범용 UI에 이미 익숙하다면, 범용 UI 데이터 테이블의 내비게이션 바 우선순위 세팅을 기억하실 수도 있습니다. UCommonInputMetadata 를 상속해 추가 메타데이터로 입력 액션을 확장할 수도 있습니다.
액션마다 하나의 에셋을 생성하는 대신 Per Action Enhanced Input Metadata 를 사용해 하나의 에셋에서 여러 액션에 대한 메타데이터를 처리할 수 있습니다.
-
-
5~6단계를 반복하되, 이번에는 Is Generic Input Action을 체크 해제합니다. 이 메타데이터를
UI_IA_SpecificMetadata로 명명합니다. 일반 입력 액션이 아닌 모든 입력 액션에 사용할 수 있는 메타데이터 클래스입니다. -
입력 액션을 엽니다. 메타데이터를 UI_IA_GenericMetadata로 설정합니다. 이제 입력 액션이 범용 UI와 함께 작동하는 데 필요한 모든 정보를 갖추었습니다.
-
Is Generic Input Action이 활성화되지 않은 메타데이터를 가진 입력 액션의 경우, 다른 입력 액션과 마찬가지로 이벤트에 입력을 바인딩할 수 있습니다.
4. 범용 UI의 입력 매핑 컨텍스트(IMC) 생성
범용 UI의 입력 매핑 컨텍스트(Input Mapping Context, IMC)는 다른 IMC와 동일하게 작동합니다. 입력 매핑 컨텍스트를 생성하려면 콘텐츠 브라우저에서 우클릭하고 입력(Input) > 입력 매핑 컨텍스트(Input Mapping Context) 를 클릭합니다. 다음 이미지는 범용 UI와 함께 사용되는 IMC의 예시입니다.
IMC가 UI에 사용된다는 것을 명확하게 표시하기 위해 IMC_UI_GenericActions 또는 이와 비슷한 이름으로 명명하는 것이 좋습니다.
5. 범용 UI에서 입력 액션과 입력 매핑 컨텍스트 사용
이전에 DataTableRows 를 사용했던 모든 위치에 입력 정보를 명시하기 위해 입력 액션을 사용할 수 있습니다. 일반적인 예시는 다음과 같습니다.
-
CommonButtonBase.
-
CommonActionWidget. UI가 아닌 입력 액션의 키를 표시할 수 있습니다.
-
Common UI Input Data. 여기에서 디폴트 내비게이션 액션이 정의됩니다.
이러한 세팅이 표시되지 않는다면 범용 UI에서 향상된 입력 활성화 세팅이 true로 설정되어 있는지 확인하세요.
활성화 가능 위젯에서, 활성화 및 비활성화 시 적용 및 제거될 IMC를 지정할 수 있습니다. 더 좋은 구성을 위해, 다른 상위 레벨 게임 IMC를 적용할 때마다 범용 UI IMC를 적용할 것을 권장합니다.
