Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Anzeige

Unreal_GameAbilitySystem.pptx

  1. DevRookie Gameplay Ability System 2023.02.04 By TonyChoiMS
  2. Remind GameplayTags GameplayTag Container GameplayTag Manager GameplayTag Delegate GameplayAbility Index 01 02 03 04 05 06
  3. - GameplayAbilityComponent 초기 세팅 방법 - Gamplay Ability란 무엇인가? - Gamplay Effect란 무엇인가? - AttributeSet이란 무엇인가? 이전 시간에 진행한 내용 01 4
  4. GameplayTags Hierarchical name
  5. - /Engine/Source/Runtime/GameplayTags/Classes/GameplayTagContainer.h - GameplayTagManager에 등록되어 있는 계층 구조를 갖는 이름 - 오브젝트의 상태를 분류하고, 설명하는 데 유용하게 사용되는 구조체 - 오브젝트가 어떤 태그를 들고 있는지, 없는지에 따라 현재 상태를 나 타낼 수 있음. (ex. Stun) Gameplay Tags 01 4
  6. - 새 게임플레이 태그 추가하면 계층 구조로 생성됨. - 태그를 비교 또는 확인 하는 함수에서 유용하게 사용 - 기존 bool이나 enum으로 상태를 정의하던 것을 GameplayTags로 대 체 - 태그는 AbilitySystemComponent에 부여하는 것이 일반적 - IGameplayTagAssetInterface 구현을 통해 엑세스 Gameplay Tags 01 4
  7. - DefaultGameplayTags.ini에 정의 - Project Setting -> Project -> GameplayTags - Create - Rename - Search for Reference - Delete Gameplay Tags 01 4
  8. Gameplay Tags 01 4
  9. Gameplay Tags 01 4
  10. - C++ 클래스에서 사용하는 GameplayTag는 코드에서 찾아야함. - FGameplayTag::RequestGameplayTag(FName); - GameplayTag 이름을 바꾸면 리디렉션이 생성됨 - 리디렉션을 정리하거나, 생성되지 않도록 하는 습관 필요 Gameplay Tags 01 4
  11. - GameplayTag 리디렉션 생성하지 않는 방법 1. 새로운 GameplayTag 생성 2. Search For Reference로 기존 GameplayTag 검색 3. 직접 새로 만든 GameplayTag로 변경 4. 이전 GameplayTag 제거 Gameplay Tags 01 4
  12. - LooseGameplayTag 존재 - Replicate 되지 않는 GameplayTag - 직접 관리 필요 - TagMapCount도 직접 관리 필요 - UAbilitySystemComponent::AddLooseGameplayTag() - UAbilitySystemComponent::RemoveLooseGameplayTag() Gameplay Tags 01 4
  13. Gameplay Tags 01 4
  14. ExactMatch >> Character.Action == Character.Action.Attack ? FALSE Character.Action.Attach == Character.Action.Attack ? TRUE Not ExactMatch >> Character.Action == Character.Action.Attack ? TRUE Character.Action.Attach == Character.Action.Attack ? TRUE Gameplay Tags 01 4
  15. GameplayTag Container Hierarchical name
  16. - 다수의 GameplayTag는 FGameplayTagContainer에 저장 - TArray<FGameplayTag>를 통해 저장할 수도 있으나, Container 사용 권장 - Tag는 FName을 사용 - Iteration을 위해 TArray<FGameplayTag>를 리턴하는 함수 존재 FGameplayTagContainer 01 4
  17. - 저장된 GameplayTag의 인스턴스 수를 저장하는 TagMap 존재 - Container 내부에 GameplayTag가 존재할 수 있지만, TagMapCount 가 0일 수 있음. - HasTag(), HasMatchingTag() 등 유사한 함수들은 TagMapCount도 같이 확인 FGameplayTagCountContainer 01 4
  18. GamePlayTagManager Hierarchical name
  19. - 현재 GameplayTag의 parent 또는 child를 가져올 수 있음 - #include “GameplayTagManager.h” - UGameplayTagManager::Get().FunctionName() - Manager를 통해 비교 시, 상수 문자열 조작 및 비교보다 빠르게 처리 GameplayTagManager 01 4
  20. - 클래스 멤버를 노출 할 때 특정 태그만 보이도록 설정 - UPROPERTY(Meta = (Categories =“GameplayCue”)) - 함수 파라미터에 특정 태그만 보이도록 설정 - UFUNCTION(Meta=(GameplayTagFilter=“GameplayCue”)) - GameplayTagContainer 파라미터는 필터링 불가능. GameplayTagManager 01 4
  21. GamePlayTag Delegate Hierarchical name
  22. - UAbilitySystemComponent는 GameplayTag가 추가/삭제 될 때마다 Delegate를 통해 사용자에게 알림 - 문법은 코드 참조 - EGameplayTagEventType에 따라 이벤트 시점 정함 - NewOrRemoved : 새롭게 추가/완전히 제거 된 경우 - AnyCountChange : TagMapCount 변경 마다 GameplayTag Delegate 01 4
  23. GameplayTag Delegate 01 4
  24. - Callback 함수 등록 (Register) - virtual void FunctionName(const FGameplayTag, int32); - tag : 콜백을 호출한 Tag - int32 : 새롭게 갱신 된 TagCount - Delegate는 꼭 등록 후, 해제 필요 (Unregister) GameplayTag Delegate 01 4
  25. GameplayTag Delegate 01 4
  26. GamePlayAbility GameplayAbilitySystem
  27. - GameplayAbility (a.k.a GA) - GA는 게임 플레이 안에서 Actor의 어떤 스킬이나 액션을 할 수 있게 합니다. - 하나 이상의 GA가 한번에 활성화가 된다면, 1. 뛰면서 (sprint) 2. 스킬(Skill)을 쓸 수 있습니다. GameplayAbility 01 4
  28. - 이것들을 모두 BP와 C++로 만들 수 있습니다. - GameplayAbility 예 1. 점프 / 달리기 2. 스킬 시전 3. 일정 시간 동안 X번의 공격을 방어할 수 있는 패시브형 Block 4. 포션 사용, 문열기, 재료 수집 GameplayAbility 01 4
  29. - GameplayAbility로 구현되지 않아도 되는 예시 1. 기본적인 행동에 대한 인풋(Movement Input) 2. UI와의 상호 작용 기능. - 상점에서 사고 파는 행위 GameplayAbility 01 4
  30. - 이것은 절대적인 룰은 아니고, 단지 추천 내용이며, 게임의 디자인에 따라 달라질 수 있습니다. - 기본적인 기능과 함께 Level에 따라 Attribute 또는 GameplayAbility 기능 변경 가능 - 기본적인 행동에 Cost와 CoolDown을 GameplayEffect에 포함 GameplayAbility 01 4
  31. - AbilityTask를 통해 일정 시간 기다릴 수 있음. - 이벤트 대기 - Attribute 변경 대기 - 플레이어가 타겟을 지정할 때 까지 대기 - 특정 애니메이션이 출력될 때까지 대기 GameplayAbility 01 4
  32. - 모든 GameplayAbility는 ActivateAbility() Override - EndAbility 존재 - GameplayAbility가 완료되거나 취소 될 때 호출 GameplayAbility 01 4
  33. GameplayAbility 01 4
  34. GameplayAbility 01 4
  35. GameplayAbility 01 4
  36. GameplayAbility 01 4
  37. - GameplayAbility BP 내부에서 각종 태그 설정 가능 GameplayAbility 01 4
  38. 참고 자료 05 27 - 언리얼 공식 문서 - Tranek Github (비공식이지만, 꽤 방대한 분량 및 Contributors 보유) - GameplayAbilitySystem 튜토리얼 영상
  39. 감사합니다
Anzeige