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

 

현재 UI_HUD 위젯 블루프린트의 모습은 다음과 같다.

  • 플레이어의 이름과 HP 정보 등이 표시돼야 하므로, 플레이어 스테이트와 캐릭터 스탯 컴포넌 둘 모두에 바인딩해야 한다.

 

 

플레이어 스테이트에 상태가 변경되었을 때 발동할 멀티캐스트 델리게이트를 선언한다.

  • 캐릭터 스탯 컴포넌트에는 OnHPChanged 델리게이트가 이미 선언되어 있다.
  • HUD UI에서 두 곳에 있는 델리게이트에 위젯을 갱신하는 함수를 등록해 바인딩할 것이다.

 

 

캐릭터 스탯 컴포넌트와 플레이어 스테이트의 델리게이트에 함수를 등록해 바인딩하는 선언한다.

  • 두 델리게이트에 바인딩 할 UI 갱신 함수도 선언한다.

 

NativeConstruct() 함수는 UI 생성이 완료된 후 위젯을 초기화하는 시점에 호출된다.

  • 그러므로 프로그레스 바, 텍스트 블록 등의 하위 위젯을 가져오는 용도로 사용할 것이다.

 

 

필요한 헤더를 포함한다.

 

 

UI 생성이 끝나면 초기화 시점에 각 하위 위젯들을 가져와 저장한다.

  • UUserWidget::GetWidgetFromName(FName) 함수를 통해 이름으로 위젯을 가져올 수 있다.

 

 

캐릭터 스탯 컴포넌트와 플레이어 스테이트의 델리게이트에 함수를 등록해 바인딩한다.

 

 

캐릭터 스탯 컴포넌트의 OnHPChanged 델리게이트, 플레이어 스테이트의 OnPlayerStateChanged 델리게이트에서 호출될 함수다.

  • 두 포인터는 TWeakObjectPtr 형식의 약 스마트 포인터이므로 사용 전에 유효한지 확인해야 한다.
  • FText에는 FromInt() 함수가 없어서 FString::FromInt() 함수로 FString 형식으로 변환해 FText::FromString() 함수에 넘겨주어야 한다.

 

 

이제 두 바인딩 함수를 어딘가에서 실행시켜 주면 된다.

  • HUD 위젯을 변수로 저장하고 있는 플레이어 컨트롤러를 이용하도록 한다.

 

플레이어 스테이트는 플레이어 컨트롤러의 BeginPlay() 함수에서 바인딩 시켜준다.

 

 

캐릭터 스탯 컴포넌트는 컴포넌트를 갖고 있는 캐릭터 클래스에서 바인딩 시켜준다.

 

 

HUD UI와 플레이어 스테이트, 캐릭터 스탯 컴포넌트를 바인딩하는 데 성공했다.

 

profile

Make Unreal REAL.

@diesuki4

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

검색 태그