0. 개요
이전 포스트에서 데이터 테이블로 속성 값을 초기화 하는 방법을 사용했다.
그러나 이 것은 아직 미완성인 방법이고 덜 대중적인 방법이다.
따라서 더 대중적인 방법으로, 게임플레이가 시작될 때 게임플레이 이펙트를 사용하여 속성 값을 초기화 하는 방법을 배워본다.
1. 게임플레이 이펙트로 속성 값 초기화하기
(1) 캐릭터가 생성될 때 초기화 하기 - AuraCharacterBase
protected:
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = : "Attributes")
TSubclassOf<UGameplayEffect> DefaultPrimaryAttributes;
void InitializePrimaryAttributes() const;
모든 캐릭터를 대상으로 속성 값을 초기화하도록 할 것이다.
아래와 같이 게임플레이 이펙트를 타겟(캐릭터)에게 적용하는 방법을 사용한다.
이 때 이펙트의 데이터는 기본 속성 값(DefaultPrimaryAttributes)을 가지고 있다.
void AAuraCharacterBase::InitializePrimaryAttributes() const
{
check(IsValid(GetAbilitySystemComponent()));
check(DefaultPrimaryAttributes);
// 컨텍스트 핸들
FGameplayEffectContextHandle ContextHandle = GetAbilitySystemComponent()->MakeEffectContext();
// 스펙 핸들
FGameplayEffectSpecHandle SpecHandle = GetAbilitySystemComponent()->MakeOutgoingSpec(DefaultPrimaryAttributes, 1.f, ContextHandle);
// 게임플레이 이펙트를 타겟에게 적용함
GetAbilitySystemComponent()->ApplyGameplayEffectSpecToTarget(*SpecHandle.Data.Get(), GetAbilitySystemComponent());
}
플레이어 캐릭터(AuraCharacter)의 ActorInfo가 초기화 되는 함수 하단에 해당 함수를 호출하면 된다.
void AAuraCharacter::InitAbilityActorInfo()
{
//~~~~~~~~
InitializePrimaryAttributes();
}
(2) 게임플레이 이펙트 생성
블루프린트를 이용하여 게임플레이 이펙트를 생성한다.
수정자에 4개의 값을 추가하고 각각의 Primary Attribute를 지정하고 수정자 연산자는 Override로, 값은 적당히 지정한다.
(3) 게임플레이 이펙트 적용
이제 BP_AuraCharacter의 디테일 창에서 PrimaryAttribute를 검색하여 생성한 게임플레이 이펙트를 선택한다.
게임을 실행하면 정상적으로 기본 값이 적용된 것을 볼 수 있다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
6-4. 2차 속성(Secondary Attributes), 파생된 속성(Derived Attributes) (2) | 2024.09.04 |
---|---|
6-3. 게임플레이 이펙트 - (5) 속성 기반 수정자(Attribute Based Modifier) (1) | 2024.09.04 |
6-1. 데이터 테이블로 속성 값 초기화(Initialize), 1차 속성(Primary Attributes) (0) | 2024.09.04 |
5-14. 체력 감소 버그 수정 - 속성 값 클램핑 (1) | 2024.09.03 |
5-13. 위젯 컨트롤러 코드 리펙토링 (0) | 2024.09.02 |