1. 블루프린트 라이브러리
언리얼 엔진에는 이미 블루프린트와 C++ 양쪽 모두에서 호출 가능한 함수들이 많이 구현되어있다. 이들은 스태틱 함수로 구성되어있기 때문에 클래스를 따로 생성하지 않아도 ::(범위 확인 연산자)로 접근이 가능하다.
이제 우리가 많이 쓸 함수들을 따로 라이브러리로 빼내어 함수를 새로 만들어보자.
이제 이곳에서 사용할 스태틱 함수를 선언하자.
static UOverlayWidgetController* GetOverlayWidgetController();
하지만 이대로만 쓸 수는 없다. 스태틱 멤버 함수는 객체에 직접 접근할 수가 없기 때문이다. 그렇기 때문에 객체를 직접 전달받아야 하고 그런 객체를 포괄적으로 다룰 수 있는 변수가 월드 오브젝트 컨텍스트이다. 이 변수의 타입은 UObject가 될 것이다.
UFUNCTION(BlueprintPure, Category="AuraAbilitySystemLibrary|WidgetController")
static UOverlayWidgetController* GetOverlayWidgetController(const UObject* WorldContextObject);
이제 이를 정의하도록 하자.
UOverlayWidgetController* UAuraAbilitySystemLibrary::GetOverlayWidgetController(const UObject* WorldContextObject)
{
if(APlayerController* PC = UGameplayStatics::GetPlayerController(WorldContextObject, 0))
{
if (AAuraHUD* AuraHUD = Cast<AAuraHUD>(PC->GetHUD()))
{
AAuraPlayerState* PS = PC->GetPlayerState<AAuraPlayerState>();
UAbilitySystemComponent* ASC = PS->GetAbilitySystemComponent();
UAttributeSet* AS = PS->GetAttributeSet();
const FWidgetControllerParams WidgetControllerParams(PC, PS, ASC, AS);
return AuraHUD->GetOverlayWidgetController(WidgetControllerParams);
}
}
return nullptr;
}
플레이어 컨트롤러를 불러와 이로부터 파람 요소들을 얻고 오버레이 위젯 컨트롤러를 반환하는 스태틱 함수를 완성하였다.
이 블루프린트라이브러리 클래스에서 더 많은 함수들을 구현할 수 있을 것이다
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 37. C++에서 태그와 어트리뷰트 연결하기 (0) | 2024.12.02 |
---|---|
[실습2] 36. 어트리뷰트 위젯 컨트롤러에서 브로드 캐스트 하기 (0) | 2024.12.02 |
[실습2] 34. 어트리뷰트 정보를 담은 데이터 에셋 만들기 (0) | 2024.12.02 |
[실습2] 33. C++로 게임플레이 태그 만들기 (싱글톤 디자인 적용) (0) | 2024.12.02 |
[실습2] 32. 커스텀 계산식으로 어트리뷰트 설정하기 (0) | 2024.12.01 |