본문으로 건너뛰기
Unreal Engine GAS(Gameplay Ability System) 심화LESSON 20

Cost와 Cooldown을 Gameplay Effect로 처리하기

난이도심화
예상 시간155분
선수지식19강의 Commit 경계

20강. Cost와 Cooldown을 Gameplay Effect로 처리하기

1. 이번 강의에서 해결할 문제​

Ability마다 Mana를 직접 빼고 Timer를 시작하면 Attribute Delegate, 예측, 태그 기반 차단과 UI가 같은 상태를 보지 못합니다. Cost와 Cooldown을 Effect로 표현해 ASC가 검사·적용·복제하게 합니다.

2. 학습 목표​

3. 핵심 개념​

Cost는 일반적으로 Mana 같은 Attribute를 감소시키는 Instant Effect이며 적용 가능 여부가 활성화 조건이 됩니다. Cooldown은 Duration Effect가 Cooldown.Ability.X Tag를 부여하고 Ability가 같은 Tag를 검사합니다. Timer를 별도 복제하지 않습니다.

4. 구현​

공통 Ability가 Blueprint Effect Asset을 반환합니다.

GASGameplayAbility.h
UPROPERTY(EditDefaultsOnly, Category="Costs")
TSubclassOf<UGameplayEffect> CostEffectClass;

UPROPERTY(EditDefaultsOnly, Category="Cooldown")
TSubclassOf<UGameplayEffect> CooldownEffectClass;

virtual const UGameplayEffect* GetCostGameplayEffect() const override;
virtual const UGameplayEffect* GetCooldownGameplayEffect() const override;
GASGameplayAbility.cpp
const UGameplayEffect* UGASGameplayAbility::GetCostGameplayEffect() const
{
return CostEffectClass ? CostEffectClass->GetDefaultObject<UGameplayEffect>() : nullptr;
}

const UGameplayEffect* UGASGameplayAbility::GetCooldownGameplayEffect() const
{
return CooldownEffectClass
? CooldownEffectClass->GetDefaultObject<UGameplayEffect>() : nullptr;
}

GE_Cost_Mana는 Mana에 음수 Modifier, GE_Cooldown_Dash는 Duration과 Cooldown Tag를 가집니다. UI는 ASC에서 Matching Tag Effect의 남은 시간을 조회하거나 Effect Added/Removed Delegate를 구독합니다.

5. 코드가 동작하는 이유​

Commit이 Cost와 Cooldown Effect를 검사·적용해 Local Prediction과 서버 결과를 같은 Spec 흐름으로 처리합니다. Cooldown Tag가 Active Effect 수명과 함께 제거되므로 별도 Timer 정리 누락을 줄입니다.

6. 실패 사례와 해결​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

Cost와 Cooldown을 Gameplay Effect로 처리하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Cost와 Cooldown을 Gameplay Effect로 처리하기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“Cost와 Cooldown을 Gameplay Effect로 처리하기” 실습 중 ‘Mana 직접 Setter와 Cost Effect 혼용’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

20강. Cost와 Cooldown을 Gameplay Effect로 처리하기 미완료 상태