일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 트리
- 유니온 파인드
- 브루트포스
- 수학
- 시뮬레이션
- 유니티
- ue5
- 다이나믹 프로그래밍
- Team Fortress 2
- 누적 합
- 자료구조
- 알고리즘
- VR
- 백트래킹
- c++
- 스택
- XR Interaction Toolkit
- BFS
- 백준
- 정렬
- 우선순위 큐
- Unreal Engine 5
- 구현
- DFS
- 투 포인터
- 다익스트라
- 그리디 알고리즘
- 문자열
- 재귀
- 그래프
- Today
- Total
1일1알
Gameplay Tags 본문
Gameplay Tags
게임플레이 태그는 계층적으로 설계할 수 있는 Enum같은 것이고, 오브젝트의 상태를 분류하는데 유용하다. 예를들어 캐릭터가 기절했다는 상태를 설계하고 싶다면 State.Debuff.Stun 태그를 만들 수 있다. 게임플레이 태그는 GAS뿐만 아니라 다른 곳에서도 유용하게 사용될 수 있다.
에디터의 Project Settings에서 원하는 태그를 생성할 수 있고, 생성된 태그들은 DefaultGameplay.ini파일에 저장된다.
태그들은 GameplayTagContainer라는 별도의 저장소에서 관리되고 저장소에 특정 태그가 있는지 체계적으로 검색할 수 있다.
GA에 특정 태그를 부착하여 해당 GA를 대표하는 태그로 설정하면 태그를 통해 GA를 발동시킬 수 있다.
특정 태그에 대해 실행 조건을 설정할 수 있다.
- AbilityTags 태그 컨테이너 : 어빌리티에 지정한 태그
- CancelAbilitiesWithTag 태그 컨테이너 : 태그로 어빌리티 취소
- BlockAbilitiesWithTag 태그 컨테이너 : 태그로 어빌리티 차단
- ActivationOwnedTags 태그 컨테이너 : 어빌리티 실행 시 태그 설정 (GA가 활성화되는 동안에 이 태그 컨테이너에 들어있는 태그가 ASC에 활성화되어서 현재 어떤 상태인지 파악할 수 있다.)
- ActivationRequiredTags 태그 컨테이너 : 태그가 있어야먄 어빌리티 실행
- ActivationBlockedTags 태그 컨테이너 : 태그가 있으면 어빌리티 실행 차단
- SourceRequiredTags 태그 컨테이너 : 시전자가 태그가 있어야 어빌리티 실행
- SourceBlockedTags 태그 컨테이너 : 시전자가 태그가 있으면 어빌리티 차단
- TargetRequiredTags 태그 컨테이너 : 시전 대상에 태그가 있어야 어빌리티 실행
- TargetBlockedTags 태그 컨테이너 : 시전 대상에 태그가 있으면 어빌리티 차단
FGameplayTag::RequestGameplayTag(FName("태그"))를 사용해 태그를 얻어올 수 있다.
위의 태그 컨테이너들을 활용하여 GA를 상속받은 클래스에서는 AbilityTags.AddTag()로 해당 GA를 대표하는 태그를 설정하고 ActivationOwnedTags.AddTag()로 활성화될 때 ASC에 활성화 될 태그를 설정하는 등의 작업이 가능하다.
ASC의 HasMatchingGameplayTag()함수를 이용해 현재 ASC에 특정 태그가 동작하고 있는지 확인할 수 있다.
태그를 사용해 GA를 발동시킬때는 스펙을 사용하던 TryActivateAbility이 아닌 TryActivateAbilityByTag()를 사용한다. 이 함수를 사용하게 되면 GA중에 AbilityTag에 이 태그가 있는 GA를 찾아서 발동시킨다. 인자로는 FGameplayTagContainer를 넘기도록 되어있다. ex) FGameplayTagContainer TargetTag(태그);
취소할때는 CancelAbilities(&TargetTag)
ASC->RegisterGameplayTagEvent(태그, EGameplayTagEventType::타입).AddUObject(this, 호출될 함수)
를 통해 태그의 변경에 따라 원하는 함수가 호출되도록 할 수 있다.
ASC->GenericGameplayEventCallbacks.FindOrAdd(태그).AddUObject(this, 호출될 함수)를 통해 특정 태그에 대한 이벤트를 호출시켰을 때 실행될 함수를 등록할 수 있다.
'언리얼 > Gameplay Ability System' 카테고리의 다른 글
Attribute (0) | 2024.07.02 |
---|---|
Ability Task (AT) (0) | 2024.06.17 |
Gameplay Abilities (GA) (0) | 2024.06.16 |
Ability System Component (ASC) (0) | 2024.06.16 |
GAS (Gameplay Ability System) 개요 (1) | 2024.06.16 |