Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준
- 유니티
- Team Fortress 2
- BFS
- 자료구조
- 그리디 알고리즘
- 우선순위 큐
- 브루트포스
- DFS
- 투 포인터
- 트리
- XR Interaction Toolkit
- 다익스트라
- 그래프
- 구현
- 백트래킹
- 재귀
- 유니온 파인드
- 스택
- VR
- 시뮬레이션
- ue5
- Unreal Engine 5
- 정렬
- 다이나믹 프로그래밍
- 문자열
- 수학
- 알고리즘
- 누적 합
- c++
Archives
- Today
- Total
1일1알
Attribute 본문
Attribute
- 어트리뷰트는 구조체 FGameplayAttributeData 에 정의된 float값이다. 오브젝트의 체력, 공격력 등 수치에 관련된 값들을 나타낼 수 있고, 일반적으로 GE로 수정한다. Attribute Set(어트리뷰트 셋)은 어트리뷰트들에 대한 정보들을 정의하고 관리한다.
Attribute Set
- 단일 어트리뷰트 데이터인 GameplayAttributeData의 묶음
- 어트리뷰트는 AttributeSet이라는 클래스를 상속받아서 구현한다.
- GameplayAttributeData는 하나의 값이 아닌 두 가지 값으로 구성되어 있음
- BaseValue : 기본값, 영구적으로 적용되는 고정 스탯 값을 관리하는데 사용
- CurrentValue : 변동값, 버프 등으로 임시적으로 변동된 값을 관리하는데 사용
- Attribute Set의 주요 함수
- PreAttributeChange : 어트리뷰트 변경 전에 호출, 변경될 값을 참조값으로 넘겨줘서 변경 사항을 적용할지 말지 결정할 수 있다.
- PostAttributeChange : 어트리뷰트 변경 후에 호출, 변경되기 전의 값과 변경 후의 값을 넘겨줘서 변화를 인지할 수 있다.
- PreGameplayEffectExecute : 게임플레이 이펙트(GE) 적용 전에 호출
- PostGameplayEffectExecute : 게임플레이 이펙트(GE) 적용 후에 호출
- 많이 수행되는 Get, Set같은 함수에 대해 매크로를 만들어서 제공
- ATTRIBUTE_ACCESSORS(ClassName, PropertyName) : GetProperty, GetValue, SetValue, Init함수들을 한줄로 선언하는 매크로
- GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) : 어트리뷰트 세트라던지 어떤 어트리뷰트를 나타내는 클래스에 등록된 프로퍼티를 가져오는 매크로
- GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) : 어트리뷰트의 CurrentValue값을 가져오는 매크로
- GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) : 어트리뷰트의 BaseValue를 변경하는 매크로
- GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName) : BaseValue와 CurrentValue를 같은 값으로 설정하는 매크로
- ASC는 초기화될 때 OwnerActor에 있는 UAttributeSet 타입 객체를 찾아서 자동으로 등록한다.
ASC를 얻어와서 ASC->GetSet<Attribute Set Class Name>()을 통해 어트리뷰트셋을 const로 가져올 수 있음
어트리뷰트셋은 설계상 GameplayEffect를 통해 변경해야 하기 때문에 const인 것 같음
메타(Meta) 어트리뷰트
- 어트리뷰트의 설정을 위해 사전에 미리 설정하는 임시 어트리뷰트
- 예) 체력을 바로 깎지 않고, 데미지를 통해 체력을 감소하도록 설정
- 체력은 일반 어트리뷰트, 데미지는 메타 어트리뷰트
- 데미지를 사용하는 경우 기획 추가에 유연한 대처가 가능
- 무적기능(데미지를 0으로 처리)
- 실드 기능(실드 값을 토대로 실드 값만큼 데미지 처리)
- 콤보 공격시 추가 데미지 보정
- 메타 어트리뷰트는 적용 후 바로 0으로 초기화
- 메타 어트리뷰트는 리플리케이션에서 제외시키는 것이 일반적
UserWidget에 특정 어트리뷰트를 바인딩하여 편리하게 UI가 변경되도록 설정할 수 있다.
ASC->GetGameplayAttributeValueChangeDelegate(ClassName::GetAttribute).AddUobject(호출될 함수)
'언리얼 > Gameplay Ability System' 카테고리의 다른 글
Gameplay Effect (0) | 2024.07.02 |
---|---|
Ability Task (AT) (0) | 2024.06.17 |
Gameplay Tags (0) | 2024.06.16 |
Gameplay Abilities (GA) (0) | 2024.06.16 |
Ability System Component (ASC) (0) | 2024.06.16 |