4. 드롭 시

이번 단계에서는 플레이어 드래그중인 위젯을 드롭했을 때 벌어지는 일을 설정합니다.

Windows
MacOS
Linux
이 페이지의 내용:

여기서는 메인 HUD 위젯 블루프린트를 구성하고 OnDrop 함수 실행 시 어떤 일을 할 것인가 오버라이드를 설정합니다.

단계

  1. HUD 위젯 블루프린트를 열고, Canvas Panel 에 대한 디테일 패널에서 비저빌리티Visible 로 설정합니다.

    DragDrop13.png

    Health Bar 위젯 안에서 드래그 감지를 하고 있지만, 왼쪽 마우스 버튼을 놓을 때는 HUD 위젯 블루프린트 안에 드롭하고자 합니다. HUD 가 히트 감지 정보를 받기 위해서는, 그 비저빌리티Visible 로 설정해야 합니다.

  2. 팔레트 창에서 Health Bar 위젯을 그래프의 원하는 위치에 추가합니다.

    DragDrop14.png

  3. 그래프 모드로 가 내 블루프린트 패널에서 OnDrop 함수 오버라이드를 추가합니다.

    DragDrop15.png

  4. OnDrop 안에서 Operation 을 끌어 놓고 Cast to WidgetDrag (WidgetDrag 에 형변환)한 뒤, Get Widget ReferenceGet Drag Offset 합니다.

    DragDrop16.png

    여기서 형변환은 OnDrop 함수의 일부로 어떤 유형의 작업이 이루어지고 있는지 검사하기 위해서입니다. Widget Drag 인지? 그렇다면, (드래그중인 위젯으로 전달한) WidgetReference 와 아울러 DragOffset (또는 드래그를 시작한 위치)를 구합니다.

  5. My GeometryPointer Event 에서 Absolute to LocalGetScreenSpacePosition 노드를 사용하여 아래와 같이 연결합니다.

    DragDrop17.png

    위젯을 드롭하기 위해 2D 스페이스에서 왼쪽 마우스 버튼을 놓은 위치를 알려줍니다. 여기에서 DragOffset 을 빼 위젯을 드롭했을 때 어디에 놓을지를 결정합니다.

  6. Absolute to LocalReturn Value 에서 DragOffset 을 뺍니다.

    UpdateDragDrop1.png

  7. Widget Reference 에서 Remove from Parent 를 추가하고, 뒤이어 Add to ViewportSet Position in Viewport 노드를 놓습니다.

  8. 아래와 같이 노드를 연결하고 Remove DPIScale 체크는 해제, Return NodeReturn Value 는 체크합니다.

    클릭하면 원본을 확인합니다.

    Remove DPIScale 체크는 해제하고 Return Value 체크는 하는 이유는 DPI 스케일링 제거는 할 필요 없이 true 를 반환하도록 이 함수를 처리해 왔기 때문입니다. 이 스크립트를 통해, 먼저 기존 Health Bar 위젯을 제거한 뒤 화면의 Drag Offset 기준 새 위치에 다시 추가합니다.

HUD 가 드래그중인 위젯 드롭을 처리하고 Health Bar 를 표시하도록 구성했습니다. 이 튜토리얼 다음 및 최종 단계에서는, Dragged Widget 을 Health Bar 모양과 비슷하게 구성하고 캐릭터 블루프린트에게 HUD 를 뷰포트에 추가하도록 할 것입니다.

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback