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

위젯 만들기

언리얼 엔진

위젯 블루프린트 를 만들고 배치한 이후 게임에서 표시되도록 하기 위해서는, 다른 (레벨 블루프린트 또는 캐릭터 블루프린트 등의) 블루프린트에서 Create WidgetAdd to Viewport 노드를 사용하여 호출해 줘야 합니다.

CreateWidgetNode.png

위 예제에서 Create Widget 노드는 Class 섹션 아래 지정된 위젯 블루프린트 를 호출하고 있으며 (Owning PlayerPlayer Controller 이며, 기본 Player Controller 의 결과가 빈 곳에 적용되어 있습니다), Return Value 은 결과 값입니다.

또한 위 예제에서, Return Value 가 Main Menu 라는 제목의 변수에 할당되어 있어, 나중에 위젯을 다시 만들지 않고도 위젯 블루프린트에 접근할 수 있게 됩니다 (그리고 위젯을 제거하는 데도 사용할 수 있습니다). 마지막으로 Add to Viewport위젯 블루프린트 를 화면에 그려주고 있으며, (생성된 위젯이 저장된) Main Menu 변수를 추가되는 타깃으로 지정하고 있습니다.

위젯이 표시되지 않도록 하려면 Remove from Parent 노드를 사용하여 타깃 위젯 블루프린트를 지정합니다.

RemoveFromViewport.png

Set Input Mode 및 Show Cursor

플레이어가 UI 상호작용을 못하게 했으면 하는 경우도 있을 수 있고, 사용자가 UI 를 완전히 무시했으면 하는 경우도 있을 수 있습니다. 플레이어와 UI 의 상호작용 방식을 결정하는 데 사용되는 노드가 몇 가지 있는데, 아래에서 보듯이 Set Input Mode 입니다.

SetInputModes.png

  • 위에서 왼쪽 노드 Set Input Mode Game and UI 는, 이름과 같은 작업을 하며, 플레이어가 입력은 물론 UI 를 통해서도 게임 조작을 할 수 있게 됩니다 (예를 들어 화면상에서 캐릭터를 제어하는 것 뿐만 아닌, 특정 버튼이나 UI 요소 클릭에도 접근 가능합니다).

  • 위에서 가운데 노드 Set Input Mode Game Only 는, 게임에 대한 입력만 가능하고 UI 요소는 무시합니다 (생명력, 점수, 시간 표시처럼 비상호작용형 UI 요소에 좋습니다).

  • 위에서 오른쪽 노드 Set Input Mode UIOnly 는 특수한 경우에 대비한 것으로, 게임 입력이 아닌 UI 조작만 가능하도록 하는 경우에 쓰입니다. 이는 모든 게임 조작을 비활성화시키고 UI 가 모든 입력을 소모하게 합니다. 이 노드는 신중히 사용하세요.

위의 노드에 추가로, 마우스 커서 표시를 켜고/끌 수 있으면 좋습니다. 그럴 때 Set Show Mouse Cursor 노드를 사용하면 됩니다. Get Player Controller 노드를 끌어 놓은 다음 Set Show Mouse Cursor 노드를 사용하여 True 또는 False 체크를 하면 마우스 커서를 표시 또는 숨깁니다.

ShowCursor.png

위에서, I 는 마우스 커서 표시/숨김을 토글하는 데 사용됩니다.

위젯에 위젯 추가하기

각 위젯에 Add to Viewport 노드를 사용하는 대신, 다른 위젯에 추가하는 것도 가능합니다.

AddChild.png

위 예제는 start_Button 이라는 Scroll Box 위젯을, Add Child 함수를 사용하여 Main Menu 라는 새 위젯에 덧붙이는 방법을 보여줍니다.

Add Child 노드는 한 패널 내에서 한 위젯과 다른 위젯에 부모자손 관계를 만드는 노드인 반면, Add to Viewport 는 위젯이 마치 새로운 창인 양 루트 뷰포트에 추가해 줍니다. 자손 위젯을 제거하려면 부모에서 RemoveChild 가 호출되도록 해야합니다.