언리얼엔진 UI 입력 문제 해결 방법

기맥히나·2025년 10월 8일

Unreal Engine

목록 보기
6/6
post-thumbnail

언리얼엔진으로 PC버전으로 만든 신규 기능들을 안드로이드 버전으로 개발하던 중,
가상 조이스틱이 터치되지 않는 이슈가 발생했다.

이 상황에서는 두가지 정도를 의심할 수 있다.

언리얼 UMG(버튼, 이미지 등) 위젯은 기본적으로 마우스,터치 이벤트를 캡처한 위젯이 있으면 그 아래 위젯에는 전달되지 않는다.

이때 Zorder를 통해 순위를 높이거나 터치가 필요없는 상위 위젯의 Visibility 속성을 변경해야한다.

  1. Zorder로 순위 높이는 방법
    Widget->AddToViewport(999);
    뷰포트에 추가할 때, Zorder의 변수값을 상위 위젯 Zorder 값보다 높게 설정하여 최상위 우선 입력으로 설정한다.
  2. Visibility 속성 변경


언리얼의 Visibility에는 5가지 옵션이 존재한다.

Visible(기본값): 화면에 보임, 레이아웃 공간 차지, 클릭&터치 입력 가능
Collapsed(완전 숨김): 화면에 보이지 않음, 레이아웃 공간 사라짐(그리드 구조일 때 하위 목록이 이동되어 출력)
Hidden(숨김): 화면에 보이지 않음, 레이아웃 공간 차지, 입력 가능한 상태
Not Hit Testable(Self & All Children): 화면에 보임, 자신을 포함한 자식 위젯 클릭X, 하위 계층의 위젯들에게 클릭됨
Not Hit-Testable(Self Only): 화면에 보임, 자기자신 클릭X, 자식 위젯 클릭 O

그래서 대부분의 입력을 필요로 하지 않는 위젯은 Not Hit Testable(Self & All Children)으로 설정한다.
보통 입력문제는 입력가능한 위젯이 Hidden 상태로 유지되는 상태에서 발생하는 경우가 잦다.

내 경우에는 위젯 대부분을 Not Hit-Testable(Self Only)로 설정해뒀지만, 그런데도 입력이 먹히지 않는 상황이였다.

그래서 찾은 기능이 위젯 리플렉터
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/using-the-slate-widget-reflector-in-unreal-engine (언리얼 위젯 리플렉터 문서)
언리얼에서 제공하는 UI 디버깅용 툴이다. (HTML로 따지면 F12 개발자 도구 같은 기능)
화면의 계층 구조, 속성, 입력 처리 여부, 현재 입력되는 UI 등을 디버깅할 수 있다.

해당 툴을 이용해 디버깅을 진행해봤다.


정상적으로 가상 조이스틱이 입력되다가

갑자기 VIsible 상태 변경된 HUD 위젯에 마우스 입력이 막혀버렸다.
이렇게 되면 해당 위젯이 입력문제를 일으킨다고 할 수 있는 것이다.

결국 해당 위젯 스크립트를 확인해서 변경되는 Visibility 코드를 변경해 해결할 수 있었다.

0개의 댓글