본문 바로가기

게임프로그래밍/실습2

[실습 2] 38. 어트리뷰트가 바뀌면 응답하기

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);
          }
       );
    }
}

 

어트리뷰트가 체인지 되면 실행시킬 함수를 바인딩 시켜놓는다.

 

이렇게 하면 끝난다.

 

다만 한가지 의문이 바인딩을 그냥 이니셜밸류 함수에서 하면 되지 않는가? 라는 생각이 든다. 직관성을 위해 나누는 것일 수 도 있으니 일단 이렇게 하도록 하자.