1. Attribute Info Data Asset
어트리뷰트의 정보를 게임플레이 태그 등과 연결한뒤 위젯에 그정보를 넘기기 위해 데이터 에셋을 만들 것이다.
어트리뷰트 데이터는 구조체에 담아 저장해보자.
USTRUCT(BlueprintType)
struct FAuraAttributeInfo
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FGameplayTag AttributeTag = FGameplayTag();
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FText AttributeName = FText();
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FText AttributeDescription = FText();
UPROPERTY(BlueprintReadOnly)
float AttributeValue = 0.f;
};
이 구조체는 차후에 브로드캐스트할때 보낼 정보이다.
이제 이 구조체를 채울 수 있어야 할것이다.
UCLASS()
class PRACTICE2_API UAttributeInfo : public UDataAsset
{
GENERATED_BODY()
public:
FAuraAttributeInfo FindAttributeInfoForTag(const FGameplayTag& AttributeTag, const bool bLogNotFound = false) const;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TArray<FAuraAttributeInfo> AttributeInformation;
};
배열을 채우는 것은 블루프린트에서 할 것이다. c++에서는 함수만 구현하도록 하자.
FAuraAttributeInfo UAttributeInfo::FindAttributeInfoForTag(const FGameplayTag& AttributeTag, const bool bLogNotFound) const
{
for (const FAuraAttributeInfo& Info : AttributeInformation)
{
if (Info.AttributeTag.MatchesTagExact(AttributeTag))
{
return Info;
}
}
if (bLogNotFound)
{
UE_LOG(LogTemp, Error, TEXT("Can't find Info for AttributeTag [%s] on AttributeInfo [%s]."), *AttributeTag.ToString(), *GetNameSafe(this));
}
return FAuraAttributeInfo();
}
구조체를 순회하여 해당 태그를 가진 구조체가 있는지 확인하다. 이제 실제 데이터 에셋을 만들어 채우도록 하자.
데이터 에셋 블루프린트를 만들었다. 이제 이 배열들을 채우면 될 것이다.
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 36. 어트리뷰트 위젯 컨트롤러에서 브로드 캐스트 하기 (0) | 2024.12.02 |
---|---|
[실습2] 35. 커스텀 블루프린트 라이브러리 만들기 (0) | 2024.12.02 |
[실습2] 33. C++로 게임플레이 태그 만들기 (싱글톤 디자인 적용) (0) | 2024.12.02 |
[실습2] 32. 커스텀 계산식으로 어트리뷰트 설정하기 (0) | 2024.12.01 |
[실습2] 31. Combat 인터페이스를 통해 플레이어 레벨 얻기 (0) | 2024.12.01 |