1. 구조체 직렬화 - Struct Ops Type Traits
구조체를 직렬화하거나 저장, 복사하기 위해 불리언 변수를 지정해놓은 구조체이다.
여기서 관심있는 것은 WithCopy, WithNetSerializer 이다.
#include "GameplayEffectTypes.h"
#include "AuraAbilityTypes.generated.h"
USTRUCT(BlueprintType)
struct FAuraGameplayEffectContext : public FGameplayEffectContext
{
GENERATED_BODY()
public:
// 구조체를 리플렉션 시스템에 사용하기 위해 반드시 오버라이드
virtual UScriptStruct* GetScriptStruct() const { return StaticStruct(); }
// 컨텍스트를 복제
virtual FAuraGameplayEffectContext* Duplicate() const
{
FAuraGameplayEffectContext* NewContext = new FAuraGameplayEffectContext();
*NewContext = *this;
if (GetHitResult())
{
// HitResult가 존재 -> 깊은 복사 수행
NewContext->AddHitResult(*GetHitResult(), true);
}
return NewContext;
}
헤더 파일에 아래 코드를 작성한다.
template<>
struct TStructOpsTypeTraits<FAuraGameplayEffectContext> : public TStructOpsTypeTraitsBase2< FAuraGameplayEffectContext>
{
enum
{
WithNetSerializer = true,
WithCopy = true
};
};
이제 구조체를 직렬화하거나 복제할 수 있게 된다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
12-3. 커스텀 어빌리티 시스템 글로벌(Aura Ability System Globals) (0) | 2024.12.24 |
---|---|
12-1. 게임플레이 이펙트 컨텍스트 - (1) 커스텀 게임플레이 이펙트 컨텍스트, 직렬화(Serialize) (0) | 2024.12.24 |
11-12. 데미지 실행 계산(Execution Calculation) - (4) 크리티컬 계산 (0) | 2024.12.23 |
11-11. 데미지 실행 계산(Execution Calculation) - (3) 블록 확률, 방어력, 방어 관통 (0) | 2024.12.19 |
11-10. 데미지 실행 계산(Execution Calculation) - (2) 속성 캡쳐(Capturing Attributes) (0) | 2024.12.19 |