-
[UE5] 캐릭터 어트리뷰트 설정UE5 2025. 1. 6. 13:11
어트리뷰트 세트(Attribute Set)
- 단일 어트리뷰트 데이터인 GameplayAttributeData의 묶음
- GameplayAttributeData는 하나의 값이 아닌 두 가지 값으로 구성되어 있음
- BaseValue : 기본 값. 영구히 적용되는 고정 스탯 값을 관리하는데 사용
- CurrentValue : 변동 값. 버프(Buff) 등으로 임시적으로 변동된 값을 관리하는데 사용
- 어트리뷰트 세트의 주요 함수
- PreAttributeChange : 어트리뷰트 변경 전에 호출
- 어트리뷰트 값 변경 가능
- PostAttributeChange : 어트리뷰트 변경 후에 호출
- 어트리뷰트 값 변경 불가능. 읽기만 가능(로그용)
- PreGameplayEffectExecute : 게임플레이 이펙트 적용 전에 호출
- PostGameplayEffectExecute : 게임플레이 이펙트 적용 후에 호출
- PreAttributeChange : 어트리뷰트 변경 전에 호출
void UABCharacterAttributeSet::PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) { if (Attribute == GetHealthAttribute()) { NewValue = FMath::Clamp(NewValue, 0.0f, GetMaxHealth()); } } void UABCharacterAttributeSet::PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue) { if (Attribute == GetHealthAttribute()) { ABGAS_LOG(LogABGAS, Log, TEXT("Health : %f -> %f"), OldValue, NewValue); } }
- 어트리뷰트 세트 접근자 매크로
- 많이 수행되는 기능에 대해 매크로를 만들어 제공함
#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName) ATTRIBUTE_ACCESSORS(UABCharacterAttributeSet, AttackRange); ATTRIBUTE_ACCESSORS(UABCharacterAttributeSet, MaxAttackRange); ATTRIBUTE_ACCESSORS(UABCharacterAttributeSet, AttackRadius);
- ASC는 초기화될 때 같은 액터에 있는 UAttributeSet 타입 객체를 찾아서 등록함
const UABCharacterAttributeSet* AttributeSet = ASC->GetSet<UABCharacterAttributeSet>(); if (!AttributeSet) { ABGAS_LOG(LogABGAS, Error, TEXT("ABCharcterAttributeSet not found!")); return FGameplayAbilityTargetDataHandle(); } FHitResult OutHitResult; const float AttackRange = AttributeSet->GetAttackRange(); const float AttackRadius = AttributeSet->GetAttackRadius();
'UE5' 카테고리의 다른 글
[UE5] .uproject, Target.cs, Build.cs (0) 2025.01.13 [UE5] 게임플레이 이펙트의 활용 (0) 2025.01.07 [UE5] GAS를 활용한 캐릭터 공격 (0) 2025.01.03 [UE5] GAS를 활용한 캐릭터의 입력 처리 (0) 2025.01.02 [UE5] GAS(GamePlay Ability System)의 시작 (1) 2024.12.30