관리 메뉴

Mini

[UE5] 속성정보 관련(구조체,탐색) 클래스구현, 속성입력 본문

UE5/Attribute Menu

[UE5] 속성정보 관련(구조체,탐색) 클래스구현, 속성입력

Mini_96 2024. 6. 8. 01:52

* 할일

1번은했고, 2-3번을 하면됨

c++ 클래스생성

 

* 속성정보를 저장하는 구조체 만들기 => 속성이 변경되면, 이 구조체 객체를 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 만들기

열어보면 구조체에서 만든 변수들이 보인다!, 채워넣으면 된다

 

값 채우기 노가다ㅜㅜ
5번만 하면 된다

 

https://github.com/DongHoonYu96/GameplayAbilitySystem_Aura/commit/8f166a648497b329dbd44a4fd91f8538e6eb2430

 

feat : 속성정보 관련 클래스 구현, 속성들 입력 · DongHoonYu96/GameplayAbilitySystem_Aura@8f166a6

구조체, 탐색함수

github.com