1. 어트리뷰트가 변하면 위젯에 알리기
void UAttributeWidgetController::BindCallbacksToDependencies()
{
UAuraAttributeSet* AS = CastChecked<UAuraAttributeSet>(AttributeSet);
for (auto& Pair : AS->TagsToAttributes)
{
AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(Pair.Value).AddLambda(
[this, Pair, AS](const FOnAttributeChangeData& Data)
{
FAuraAttributeInfo Info = AttributeInfo->FindAttributeInfoForTag(Pair.Key);
Info.AttributeValue = Pair.Value.GetNumericValue(AS);
AttributeInfoDelegate.Broadcast(Info);
}
);
}
}
어트리뷰트가 체인지 되면 실행시킬 함수를 바인딩 시켜놓는다.
이렇게 하면 끝난다.
다만 한가지 의문이 바인딩을 그냥 이니셜밸류 함수에서 하면 되지 않는가? 라는 생각이 든다. 직관성을 위해 나누는 것일 수 도 있으니 일단 이렇게 하도록 하자.
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 40. 인풋과 게임플레이 태그 연결하기 (0) | 2024.12.03 |
---|---|
[실습2] 39. 어빌리티 부여하기 (0) | 2024.12.03 |
[실습2] 37. C++에서 태그와 어트리뷰트 연결하기 (0) | 2024.12.02 |
[실습2] 36. 어트리뷰트 위젯 컨트롤러에서 브로드 캐스트 하기 (0) | 2024.12.02 |
[실습2] 35. 커스텀 블루프린트 라이브러리 만들기 (0) | 2024.12.02 |