UE5/Attribute Menu
[UE5] 속성정보 관련(구조체,탐색) 클래스구현, 속성입력
Mini_96
2024. 6. 8. 01:52
* 할일
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 만들기




feat : 속성정보 관련 클래스 구현, 속성들 입력 · DongHoonYu96/GameplayAbilitySystem_Aura@8f166a6
구조체, 탐색함수
github.com