어트리뷰트에 세팅된 Health, Stamina를 UI에 연동시켜 만들어보았다.
먼저 게임에 보여질 메인화면에서 캐릭터 정보창을 만들어 본다.
밑에 그림은 게임시작시 UI가 만들어지는 순서이다.
먼저 HUD클래스를 상속받아 클래스를 만들어 준다.
그다음 캐릭터에 BeginPlay()에서 컨트롤러를 통해 CreateHUDWidget() 함수를 실행시켜준다.
이때 컨트롤러의 CreateHUDWidget함수는 존재하지않기 때문에 컨트롤러에서 함수를 만들어준다.
그다음 만들어준 HUD 클래스에서 필요한 변수와 함수를 만들어준다.
이때 변수는 TSubclassOf를 통해서 외부로부터 클래스를 가져오게 만들어준다.
이때 메인화면의 게임위젯이 필요로 하기때문에 위젯 클래스를 만들어 주고 필요한 변수와 함수를 만들어준다.
위의 그림에서 CharacterStatusWidget이라는 클래스를 필요로 하기때문에 CharacterStatusWidget클래스를 만들어 준다.
또다시 위의 그림에서 HealthBarWidget과 StaminaBarWidget이 필요로 하기때문에 각각 클래스를 만들어 준다.
이때 만들어진 위젯클래스에서 UPROPERTY에서 meta = (BindWidget)을 사용한 변수가 있는데 이는 블루프린트 위젯의 계층구조에서 존재하는 이름과 일치해야 사용할 수 있다게된다. 그래서 meta = (BindWidget)을 사용한 변수의 이름과 위젯 계층구조에 존재하는 이름을 일치시켜 준다.
그다음 Attribute를 관리해주는 PlayerState 클레스 에서 능력치에 대한 Get함수와 Delegate를 통해 콜백함수를 만들어준다. 콜백함수를 등록시킬 함수에 FOnAttributeChangeData는 헤더파일에 GameplayEffectTypes.h를 추가시켜준다.
이제 컴파일 후 실행해보면 UI가 나오고 테스트용으로 MaxHealth를 바꿔주는 액터를 만들어 준다음 액터와 상호작용하면 잘 HealthBar와 Attribute의 있는 MaxHealth가 적용되는 것을 볼 수 있다.
'언리얼 > 개발일지' 카테고리의 다른 글
언리얼5 공부 및 개발일지 6일차 무기 구현 (0) | 2023.09.30 |
---|---|
언리얼5 공부 및 개발일지 5일차 어빌리티 시스템 향상된 입력 (0) | 2023.09.26 |
언리얼5 공부 및 개발일지 3일차 어빌리티 시스템 AttributeSet세팅 (0) | 2023.09.21 |
언리얼5 공부 및 개발일지 2일차 캐릭터 애니메이션 추가 (0) | 2023.09.21 |
언리얼5 공부 및 개발일지 1일차 캐릭터 이동 및 회전 구현 (0) | 2023.09.20 |