- 개요
ATTRIBUTE_ACCESSORS의 Init 함수를 사용하지 않고 Attribute의 값을 초기화하는 방법을 알아본다
총 2개의 방법을 알아본다
- Data Table 애셋을 통해 초기화
- GameplayEffect를 통해 초기화
1) Data Table 애셋을 통해 초기화
1 - 1) AuraAttributeSet 클래스
총 4개의 Primary Attribute를 AttributeSet에 추가한다
추가한 Attribute 역시 ATTRIBUTE_ACCESSORS를 사용하여 접근과 수정이 쉽게 이뤄지도록 설정한다
추가한 Attribute들을 Replication하기 위한 콜백 함수를 추가한다
GetLifetimeReplicatedProps 함수에서 DOREPLIFETIME_CONDITION_NOTIFY 매크로를 사용하여
추가한 Attribute들에 대해 레플리케이션 모드를 설정합니다.
추가한 Attribute들에 대한 레플리케이션 콜백 함수들을 위와 같이 작성한다
1 - 2) 언리얼 에디터
AttributeMetaData를 상속받은 Data Table 애셋을 생성한다
PlayerState의 블루 프린트의 AbilitySystemComponent에서
Default Starting Data 속성에서 Attributes / Default Starting Table 설정값을 설정한다
1 - 3) 최종 실행 결과
위와 같이 Data Table 애셋에 작성한 값으로 Attribute가 초기화된 것을 확인할 수 있다
2) GameplayEffect를 통해 초기화
2 - 1) AuraCharacterBase 클래스
추가한 Attribute들을 초기화할 GameplayEffect를 프로퍼티로 새로 추가한다
또 추가한 GameplayEffect를 캐릭터에게 적용하기 위한 함수 2개를 추가하였다
ApplyEffectToSelf 함수의 로직은 위와 같이 구성하였다
ASC로부터 GameplayEffect를 적용하기 위한 GameplayEffectContext의 Handle을 생성한다
생성한 Handle의 Source를 캐릭터 자기자신으로 설정한다
생성한 GEContext의 Handle에서 GESpec의 Handle을 생성하고 GameplayEffect를 자기자신에게 적용한다
InitializeDefaultAttributes 함수의 로직은 위와 같다
프로퍼티 DefaultPrimaryAttributes를 ApplyEffectToSelf 함수에 인자로 넘겨 Attribute를 초기화한다
2 - 2) AuraCharacter 클래스
InitAbilityActorInfo 함수의 제일 마지막에 InitializeDefaultAttributes 함수를 호출하여
플레이어 캐릭터의 Attribute를 초기화한다
2 - 3) 언리얼 에디터
새롭게 추가한 Attribute들을 Override 방식으로 초기화하는 GameplayEffect를 생성한다
플레이어 캐릭터의 블루 프린트에서 생성한 GameplayEffect를 설정한다
2 - 4) 최종 실행 결과
위와 같이 Attribute의 값이 문제없이 초기화되는 것을 확인할 수 있다
프로젝트에서는 Data Asset을 사용하는 방식이 아닌, Gameplay Effect를 사용하여 Attribute를 초기화한다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
RPG 게임의 능력치 - 4) 새로운 능력치 추가와 레벨 시스템 추가 (0) | 2025.07.27 |
---|---|
RPG 게임의 능력치 - 3) Attribute Based 모디파이어 (0) | 2025.07.27 |
GameplayTags - 최종) GameplayEffect의 Tag로 UI 띄우기 (0) | 2025.07.25 |
GameplayTags - 3) DataTable에 정의된 Tag 사용하기 (0) | 2025.07.25 |
GameplayTags - 2) GameplayEffect와 GameplayTag (0) | 2025.07.20 |