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);
}
데이터 에셋에서 실제 값은 할당하지 않았었다. 어트리뷰트 세트에서 가져와서 할당하기 위해서이다. 그리고 지금 그작업을 하고 있다. 그런 다음 브로드 캐스트를 하면 된다.
이제 컴파일하고 브로드 캐스트 한 값을 받아와보자.
이제 컴파일하고 위젯 블루프린트에서 함수를 호출해주면 된다.
이어서는 브로드 캐스트 한 값을 실제로 텍스트를 바꾸는데 사용해야할 것이다.
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습 2] 38. 어트리뷰트가 바뀌면 응답하기 (0) | 2024.12.02 |
---|---|
[실습2] 37. C++에서 태그와 어트리뷰트 연결하기 (0) | 2024.12.02 |
[실습2] 35. 커스텀 블루프린트 라이브러리 만들기 (0) | 2024.12.02 |
[실습2] 34. 어트리뷰트 정보를 담은 데이터 에셋 만들기 (0) | 2024.12.02 |
[실습2] 33. C++로 게임플레이 태그 만들기 (싱글톤 디자인 적용) (0) | 2024.12.02 |