Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

예제 폴더의 Resource > Chapter14 > Book > UI 폴더에 있는 UI_HUD.uasset 파일을 복사해 프로젝트의 Content > Book > UI 폴더에 붙여넣는다.

  • 위젯 블루프린트 에셋이다.

 

 

UI_HUD의 부모 클래스로 지정할 새로운 UserWidget 클래스를 만든다.

 

 

CoreMinimal.h를 ArenaBattle.h로 변경해준다.

 

 

UI_HUD 위젯 블루프린트를 열어 부모 클래스를 UUserWidget 클래스를 상속한 ABHUDWidget 클래스로 변경해준다.

 

 

플레이어 컨트롤러에서 UI_HUD 위젯을 생성하고 화면에 띄워보겠다.

  • 위젯 생성은 플레이어 컨트롤러의 BeginPlay() 함수에서 내부적으로 수행된다.
  • 그러므로, 위젯 생성 코드는 플레이어 컨트롤러에 작성해주는 것이 좋다.

 

기존에 생성자를 따로 구현해주지 않았는데 선언해준다.

  • 필요에 따라 생성자 구현을 스킵할 수도 있지만, 가능하면 빈 내용이라도 작성해 두는 것이 좋다.

 

HUD 위젯의 Getter를 선언한다.

 

 

위젯 생성 시 전달할 클래스 정보를 저장하는 HUDWidgetClass 변수를 선언한다.

  • UClass* 타입으로 지정해도 되지만, IntelliSense 시에 불필요한 것들까지 보이게 되므로 TSubclassOf<UABHUDWidget> 타입으로 지정한다.

 

HUDWidget 변수는 생성된 위젯을 저장하는 변수다.

  • Widget 컴포넌트와 헷갈리면 안 된다.
  • Widget 컴포넌트는 액터에 컴포넌트로 추가하는 위젯이고, User Widget은 뷰포트에 띄우거나 위젯 블루프린트의 부모로 지정하는 위젯이다.

 

 

헤더를 포함하고 생성자에서 위젯 블루프린트 클래스를 찾아 생성할 위젯 클래스를 지정한다.

 

 

BeginPlay() 함수에서 위젯을 생성하고 뷰포트에 추가한다.

  • 뷰포트용 위젯 생성은 플레이어 컨트롤러의 BeginPlay() 함수에 작성하는 것이 일반적이다.
  • 액터에 붙이는 위젯 컴포넌트의 위젯이 생성되는 시점도 BeginPlay() 함수이다.

 

UUserWidget::AddToViewport() 함수를 통해 뷰포트에 위젯을 추가할 수 있다.

  • 뷰포트에서 위젯을 제거하는 함수는 RemoveFromParent() 함수다.

 

 

위젯의 Getter이다.

 

 

뷰포트에 HUD UI를 추가하는 데 성공했다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그