본문 바로가기

게임프로그래밍/실습2

[실습2] 36. 어트리뷰트 위젯 컨트롤러에서 브로드 캐스트 하기

1. 위젯 컨트롤러에서 브로드 캐스트하기

 

어트리뷰트 위젯 컨트롤러가 생겼으니 이제 여기서 값을 브로드 캐스트하는 방법을 알아보자.

 

UAuraAttributeSet* AS = CastChecked<UAuraAttributeSet>(AttributeSet);

 

어트리뷰트 세트를 가져온다.

 

어트리뷰트 세트 클래스에는 엑세서가 있어서 어트리뷰트들에 접근할 수 있다. 이제 이 값을 브로드캐스트할 수 있어야 한다.

 

헤더파일에서 델리게이트를 선언하자.

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAttributeInfoSignature, const FAuraAttributeInfo&, Info);

 

델리게이트 인스턴스를 만들어준다.

UPROPERTY(BlueprintAssignable, Category="GAS|Attributes")
FAttributeInfoSignature AttributeInfoDelegate;

 

이제 브로드 캐스트하기만 하면 될 것이다.

 

브로드캐스트하기에 앞서 그저 이 정보만 브로드 캐스트 하는게 아니라 어트리뷰트 데이터 에셋에서 설정한 값 전부를 보내고 싶고 그러기 위해서 해당 클래스를 가져올 수 있어야 한다.

 

protected:
    UPROPERTY(EditDefaultsOnly)
    TObjectPtr<UAttributeInfo> AttributeInfo;

 

void UAttributeWidgetController::BroadCastInitialValues()
{
    UAuraAttributeSet* AS = CastChecked<UAuraAttributeSet>(AttributeSet);

    check(AttributeInfo);

    FAuraAttributeInfo Info = AttributeInfo->FindAttributeInfoForTag(FAuraGameplayTags::Get().Attributes_Primary_Strength);
    Info.AttributeValue  = AS->GetStrength();
    AttributeInfoDelegate.Broadcast(Info);
}

 

데이터 에셋에서 실제 값은 할당하지 않았었다. 어트리뷰트 세트에서 가져와서 할당하기 위해서이다. 그리고 지금 그작업을 하고 있다. 그런 다음 브로드 캐스트를 하면 된다.

 

이제 컴파일하고 브로드 캐스트 한 값을 받아와보자.

 

이제 컴파일하고 위젯 블루프린트에서 함수를 호출해주면 된다.

 

이어서는 브로드 캐스트 한 값을 실제로 텍스트를 바꾸는데 사용해야할 것이다.