* 할일
1번은했고, 2-3번을 하면됨
* 속성정보를 저장하는 구조체 만들기 => 속성이 변경되면, 이 구조체 객체를 BP로 브로드캐스팅할거임
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "Engine/DataAsset.h"
#include "AttributeInfo.generated.h"
USTRUCT(BlueprintType)
struct FAuraAttributeInfo
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FGameplayTag AttributeTag = FGameplayTag(); //초기화
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FText AttributeName = FText(); //표시될 위젯의 txt
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
FText AttributeDescription = FText(); //표시될 위젯의 txt
UPROPERTY(BlueprintReadOnly) //DA에서 편집금지
float AttributeValue=0.f;
};
/**
*
*/
UCLASS()
class AURA_API UAttributeInfo : public UDataAsset
{
GENERATED_BODY()
public:
FAuraAttributeInfo FindAttributeInfoForTag(const FGameplayTag& AttributeTag, bool bLogNotFound=false) const;
UPROPERTY(EditDefaultsOnly,BlueprintReadOnly)
TArray<FAuraAttributeInfo> AttributeInformation; //속성 정보들, BP에서 의존성주입
};
// 태그에 맞는 정보를 리턴해주는 함수 구현
// Fill out your copyright notice in the Description page of Project Settings.
#include "AbilitySystem/Data/AttributeInfo.h"
FAuraAttributeInfo UAttributeInfo::FindAttributeInfoForTag(const FGameplayTag& AttributeTag, bool bLogNotFound) const
{
for(const FAuraAttributeInfo& Info : AttributeInformation)
{
if(Info.AttributeTag==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(); // 빈 속성정보 리턴
}
* Data Asset 만들기
'UE5 > Attribute Menu' 카테고리의 다른 글
[UE5] Attribute Info 델리게이트 // 위젯에 데이터 (속성명, 값) 연결하기 (0) | 2024.06.08 |
---|---|
[UE5] 메뉴 위젯 컨트롤러 구현, BP내 사용가능한 위젯컨트롤러 게터 만들기, BP 상속안될때 해결방법, MVC 정리 (0) | 2024.06.08 |
[UE5] 위젯에 실제 데이터 바인딩 구현1, cpp에서 태그추가-조회 (0) | 2024.06.07 |
[UE5] 위젯에 실제 데이터 바인딩 설계 (0) | 2024.06.07 |
[UE5] 버튼클릭시, 속성위젯 띄우기 구현 // 위젯위치 조정방법 (0) | 2024.06.07 |