UE(GAS) - UGameplayEffectExecutionCalculation
2024. 8. 20. 15:31ㆍUnreal Engine
UGameplayEffectExecutionCalculation는 Unreal Engine의 Gameplay Ability System (GAS) 에서 사용되는 클래스 중 하나입니다. 이 클래스는 Gameplay Effect의 계산 로직을 정의하는 데 사용됩니다. UGameplayEffectExecutionCalculation를 사용하면 능력(Ability)의 효과가 적용될 때, 복잡한 계산이나 커스텀 로직을 수행할 수 있습니다.
주요 개념
- Gameplay Effect:
- Gameplay Effect는 능력(Ability)이나 상태 변화와 같은 게임플레이 이벤트의 결과를 정의합니다. 예를 들어, 피해를 입히거나, 치유를 하거나, 버프 또는 디버프를 적용할 수 있습니다.
- UGameplayEffectExecutionCalculation은 이 효과가 적용될 때 계산되는 복잡한 로직을 처리하기 위해 사용됩니다.
- Execution Calculation:
- Execution Calculation은 Gameplay Effect가 발동될 때 수행되는 사용자 정의 계산입니다.
- 이 클래스는 보통 여러 입력 값을 받아 복잡한 수식을 처리하고, 결과 값을 출력으로 제공합니다. 예를 들어, 피해량 계산, 치유량 계산, 또는 상태 효과 적용에 대한 로직을 구현할 수 있습니다.
UGameplayEffectExecutionCalculation 클래스의 기능
UGameplayEffectExecutionCalculation 클래스는 기본적으로 Execute_Implementation 함수에서 계산 로직을 정의합니다. 이 함수는 Gameplay Effect가 실행될 때 호출되며, 필요한 계산을 수행하고 결과를 Gameplay Effect에 전달합니다.
기본 클래스 구조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include "GameplayEffectExecutionCalculation.h"
#include "MyGameplayEffectExecutionCalculation.generated.h"
UCLASS()
class UMyGameplayEffectExecutionCalculation : public UGameplayEffectExecutionCalculation
{
GENERATED_BODY()
public:
UMyGameplayEffectExecutionCalculation();
protected:
virtual void Execute_Implementation(
const FGameplayEffectCustomExecutionParameters& ExecutionParams,
OUT FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const override;
};
|
cs |
주요 함수
- Execute_Implementation:
- Execute_Implementation 함수는 커스텀 로직을 구현하는 핵심 부분입니다. Gameplay Effect가 실행될 때 이 함수가 호출되어 계산이 수행됩니다.
- ExecutionParams는 계산에 필요한 다양한 입력 값을 포함하고 있으며, OutExecutionOutput은 계산 결과를 담습니다.
예시: 피해량 계산
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void UMyGameplayEffectExecutionCalculation::Execute_Implementation(
const FGameplayEffectCustomExecutionParameters& ExecutionParams,
OUT FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const
{
// 입력 파라미터에서 데이터를 가져오기
const FGameplayEffectSpec& Spec = ExecutionParams.GetOwningSpec();
UAbilitySystemComponent* TargetAbilitySystemComponent = ExecutionParams.GetTargetAbilitySystemComponent();
AActor* TargetActor = TargetAbilitySystemComponent ? TargetAbilitySystemComponent->GetOwner() : nullptr;
// 커스텀 계산 로직
float BaseDamage = 10.0f;
float FinalDamage = BaseDamage; // 더 복잡한 계산을 여기에 추가
// 계산된 결과를 출력
OutExecutionOutput.AddOutputModifier(FGameplayModifierEvaluatedData(SomeDamageAttribute, EGameplayModOp::Additive, FinalDamage));
}
|
cs |
GameplayEffectExecutionCalculation의 사용 사례
- 피해량 계산:
- 피해량을 계산할 때, 캐릭터의 스탯, 아이템 효과, 상태 효과 등을 고려해 복잡한 수식을 적용할 수 있습니다.
- 상태 효과 적용:
- 상태 효과를 적용할 때, 다양한 조건을 기반으로 로직을 분기하여 효과의 강도나 지속 시간을 조정할 수 있습니다.
- 능력치 조정:
- 스탯이나 능력치를 복잡한 계산 로직으로 조정할 때 유용합니다.
요약
UGameplayEffectExecutionCalculation은 Unreal Engine의 Gameplay Ability System에서 복잡한 계산을 수행하고 결과를 적용하는 데 사용됩니다. Gameplay Effect의 실행 과정에서 커스텀 계산 로직을 정의할 수 있으며, 이를 통해 게임플레이의 다양한 요소를 제어할 수 있습니다. 이 클래스는 특히 복잡한 게임플레이 메커니즘을 구현할 때 유용합니다.
'Unreal Engine' 카테고리의 다른 글
UE(GAS) - NetSerialize() 데이터 직렬화, 역직렬화 (0) | 2024.08.21 |
---|---|
UE(GAS) - DECLARE_ATTRIBUTE_CAPTUREDEF(), DEFINE_ATTRIBUTE_CAPTUREDEF() (0) | 2024.08.20 |
UE(GAS) - IsNetMode() (0) | 2024.08.20 |
UE(GAS) - AbilitySpecInputPressed() (0) | 2024.08.07 |
UE(GAS) - GetActivatableAbilities() (0) | 2024.08.07 |