헤드업 디스플레이의 구현 (Implementing Head Up Display)
헤드업 디스플레이의 생성 프로세스
- 헤드업 디스플레이(HUD)의 생성 과정
플레이어 컨트롤러에 의해 제작되고 관리되는 UI 객체
HUD의 구현은 위젯을 생성하고 이를 플레이어 뷰포트에 띄우는 과정으로 생성됨
이렇게 만들어진 위젯은 자신을 소유한 플레이어 컨트롤러에 접근할 수 있다.
(GetOwningPlayerPawn()으로 빙의한 폰을 가져올 수도 있음)

- HUD 구현
HUD의 경우 모니터의 화면을 모두 사용하므로 WBP에서 CanvasPanel을 최상단으로 배치
- CreateWidget<>() 함수로 위젯 생성
- AddToViewport() 함수로 화면에 띄우기
- 초기화 프로세스의 정리
컴포넌트, 액터, UI 위젯의 초기화 과정

실습코드
https://github.com/dnjfs/ArenaBattle/commit/e0ef5196d0964b1736161ced995beb881ceb50bb
-
NativeConstruct()
플레이어 컨트롤러에서 AddToViewport() 시 호출됨
이때 위젯의 내용을 채우는 로직 실행
참고로 Viewport에 추가될 때마다 호출되므로 자주 탈부착하는 위젯이면 주의해서 사용!
-
스탯 업데이트
인터페이스 추가하여 플레이어 캐릭터에 상속시키고 스탯의 변화가 있다면 델리게이트 실행하여 위젯 업데이트 하도록 구현
-
float -> FString
FString::SanitizeFloat(float)