언어:
페이지 정보
태그:
수준별:
엔진 버전:
언리얼 엔진

위젯 인터랙션 컴포넌트

언리얼 엔진

이 기능은 실험단계 기능으로, 일부분 예상대로 작동치 않거나 앞으로 있을 업데이트에 변경될 수 있습니다.

위젯 컴포넌트 를 사용하여 게임 월드에 3D 로 존재하는 UI 를 표시하고, 플레이어가 그 위젯과 상호작용할 수 있도록 하려는 경우, Widget Interaction (위젯 인터랙션) 컴포넌트로 그 상호작용을 발생시킬 수 있습니다.

위젯 인터랙션 컴포넌트는 Raycast (레이캐스트)를 통해 월드의 위젯 컴포넌트에 닿는지 확인한 뒤, 닿은 경우 그 컴포넌트와의 상호작용 방법을 결정하는 규칙을 구성할 수 있습니다. 인터랙션은 정의된 키가 눌렸는지에 대한 시뮬레이션을 통해 이루어지는데, 예를 들어 Button (버튼)을 왼쪽 마우스 버튼으로 클릭한 경우, 다른 형태의 입력에게 왼쪽 마우스 버튼 클릭(컨트롤러 버튼 누름, 모션 컨트롤러 트리거 누름 등)을 시뮬레이션하라 이릅니다.

단계별 예제는 3D 위젯 상호작용 생성 , 가상 키보드 상호작용 생성 문서를 참고하세요.

위젯 인터랙션 컴포넌트 추가

전형적으로 위젯 인터랙션 컴포넌트를 추가하기 좋은 곳은, Component (컴포넌트) 의 플레이어 Pawn (폰) 또는 Character (캐릭터) 클래스입니다.

WidgetInteractionComponent.png

위에서, 캐릭터가 들고 있는 총에 붙여 총으로 가르키는 곳을 위젯 인터랙션 컴포넌트가 가르키도록 합니다.

위젯 인터랙션 프로퍼티 참고서

위젯 인터랙션 컴포넌트를 추가했으면, 디테일 패널의 여러가지 프로퍼티로 그 작동 방식을 조절할 수 있습니다. 트랜스폼, 렌더링, 소켓 같은 일반적인 프로퍼티 외에, 위젯 인터랙션 컴포넌트에만 사용되는 프로퍼티는 아래와 같습니다.

옵션

설명

Interaction 상호작용

Virtual User Index

가상 사용자 인덱스 - 위젯 인터랙션 컴포넌트는 이 가상 사용자 인덱스를 사용하여 포커스 상태를 별도로 캡처하고 처리합니다. 각각의 가상 사용자는 각기 다른 인덱스를 사용해야 별도의 캡처 및 포커스 상태를 유지할 수 있습니다. 각 위젯 인터랙션 컴포넌트가 온라인 상태가 되면, 슬레이트에게 할당된 가상 사용자 인덱스를 알려주고 실제 슬레이트 사용자인 것처럼 이벤트를 전송할 수 있습니다.

Pointer Index

포인터 인덱스 - 각 사용자의 Virtual Controller (가상 컨트롤러) 또는 Virtual Finger Tips (가상 손끝)은 각기 다른 Pointer Index (포인터 인덱스)를 사용해야 합니다.

Interaction Distance

상호작용 거리 - 위젯 컴포넌트와의 상호작용하기 위해 접근해야 하는 게임 유닛 단위 거리입니다.

Interaction Source

상호작용 소스 - 프로젝션 및 트레이스 시작 위치를 (월드, 마우스, 화면 중앙, 커스텀 중에서) 결정합니다. 커스텀으로 설정하는 경우, SetCustomHitResult() 를 호출하고 원하는 위치에서의 커스텀 히트 테스트 결과를 제공해야 합니다.

Enable Hit Testing

히트 테스팅 켜기 - 인터랙션 컴포넌트가 (자동 또는 커스텀) 히트 테스팅을 수행할지, 호버(커서 올려놓기) 시뮬레이션을 시도할지 결정합니다. 키보드 에뮬레이션을 하려는 데 가상 키보드가 가상 포인터 디바이스에서 분리되어 있는 경우, 이 옵션을 끄고 그 포인터 디바이스에 대해 이차 인터랙션 컴포넌트를 사용해야 합니다.

Debugging 디버깅

Show Debug

디버그 표시 - 상호작용 디버깅에 도움이 되는 디버깅 선, 히트 구체를 표시합니다.

Debug Color

디버그 색 - Show Debug 옵션이 켜졌을 때의 디버그 선 색을 결정합니다.

Events 이벤트

On Hovered Widget Changed

커서를 올려둔 위젯 변경시 - 커서를 올려둔 위젯 컴포넌트가 변하면 호출됩니다. 인터랙션 컴포넌트는 슬레이트 단에서 작동하므로, 히트 결과 하에 무슨 위젯이 있는지에 대해서는 어떤 것도 보고할 수 없습니다.

위젯 인터랙션 블루프린트 노드 참고서

위젯 인터랙션 컴포넌트는 다양한 유형의 (누르기, 떼기, 눌렀다 떼기 등) 입력 방식에 대한 시뮬레이션이 가능한데, 블루프린트 컨텍스트 메뉴의 Interaction (상호작용) 섹션에서 찾을 수 있습니다. 위젯 인터랙션 컴포넌트에 등록된 지난 "히트" 위치 또는 월드의 위젯 컴포넌트에 현재 커서가 올라가 있는지와 같은 정보를 구할 수도 있습니다.

WidgetInteractionBlueprint.png

노드

설명

Get Hovered Widget Component

호버 대상 위젯 컴포넌트 구하기 - 현재 커서가 올라가 있는 위젯 컴포넌트를 구합니다.

Get Last Hit Result

지난 히트 결과 구하기 - 컴포넌트가 생성한 지난 히트 결과를 구합니다. 설정된 경우 커스텀 히트 결과를 반환합니다.

Is Over Focusable Widget

포커스 가능 위젯 위에 있는지 - 히트 결과 하의 위젯에 포커스를 잡을 수 있다면 true 를 반환합니다. SupportsKeyboardFocus() 에 대해 true 를 반환하는 슬레이트 위젯입니다.

Is Over Hit Test Visible Widget

히트 테스트에 보이는 위젯 위에 있는지 - 히트 결과 하의 위젯이 히트 테스트에 보이도록 만드는 비저빌리티 세팅이 있다면 true 를 반환합니다. GetVisibility().IsHitTestVisible() 에 대해 true 를 반환하는 슬레이트 위젯입니다.

Is Over Interactable Widget

상호작용 가능 위젯 위에 있는지 - 히트 결과 하의 위젯이 상호작용 가능한 경우 true 를 반환합니다. IsInteractble() 에 대해 true 를 반환하는 슬레이트 위젯입니다.

Press and Release Key

키 누르기 및 떼기 - 시뮬레이션 키보드 키 누르기와 떼기를 둘 다 수행합니다.

Press Key

키 누르기 - 시뮬레이션 키보드 키의 누르기를 수행합니다. a-z|A-Z 에는 이 옵션을 사용하지 마십시오. 슬레이트의 Editable Textbox (편집가능 텍스트박스)같은 것은 OnKeyChar 가 호출되어야 특정 캐릭터를 위젯에 전송하도록 신호를 보낼 것으로 기대하기 때문입니다. 해당 글자의 경우 SendKeyChar 를 사용하세요.

Press Pointer Key

포인터 키 누르기 - 마우스/포인터에서 키 누르기를 시뮬레이션 합니다. 대부분의 경우, 제공된 키는 마우스 버튼이 될테지만, 아무 키나 사용할 수 있습니다. 다른 키를 전송하여 위젯이 특별한 동작을 받도록 신호를 보내는 것과 같은 고급 사용 예도 지원됩니다.

Release Key

키 떼기 - 키보드에서 키를 떼는 것을 수행합니다.

Release Pointer Key

포인터 키 떼기 - 마우스/포인터의 키를 뗴는 것을 시뮬레이션합니다. Press Pointer Key 와 비슷합니다. 대부분의 경우 제공되는 키는 마우스 버튼일 것이지만, 아무 키나 사용할 수 있습니다.

Scroll Wheel

스크롤 휠 - 지난 히트 결과 하의 위젯에 스크롤 휠 이벤트를 전송합니다.

Send Key Char

키 캐릭터 전송 - 스트링에 나열된 각 키에 대해 OnKeyChar 이벤트를 시뮬레이션하여 위젯에 캐릭터 목록을 전송합니다.

Set Custom Hit Result

커스텀 히트 결과 설정 - 커스텀 히트 결과를 설정합니다. Interaction Source 가 커스텀으로 설정된 경우에만 쓰입니다.

위젯 인터랙션 컴포넌트의 프로퍼티는 getter 형태로 구할 수도, setter 노드를 통해 설정할 수도 있습니다.

WidgetInteractionVariables.png