게임엔진/Unreal

[Unreal] UI(위젯)에서 메인 캐릭터 가져오기

ShovelingLife 2022. 11. 19. 21:52

UUserWidget 클래스 내에 연관된 플레이어 캐릭터를 가져오는 함수가 존재한다. T같은 경우엔 미리 캐스팅해서 반환해준다는 점이 다르다.

FLocalPlayerContext 구조체 변수에 의해 가져오게 된다.

// 템플릿 함수 캐스팅해서 반환한다
template < class T >
T* GetOwningPlayerPawn() const
{
	return Cast<T>(GetOwningPlayerPawn());
}

// 플레이어 폰을 가져오는 함수
APawn* UUserWidget::GetOwningPlayerPawn() const
{
	if (APlayerController* PC = GetOwningPlayer())
	{
		return PC->GetPawn();
	}

	return nullptr;
}

// 플레이어 캐릭터를 반환하는 함수 PlayerContext가 사용 불가능하다면 널을 반환한다.
APlayerController* UUserWidget::GetOwningPlayer() const
{
	return PlayerContext.IsValid() ? PlayerContext.GetPlayerController() : nullptr;
}