티스토리 뷰

Initialize Attributes with Gameplay Effects

이번에는 Attribues 값 초기화를 Gameplay Effect를 통해 설정할 것이다.

이에 앞서 언리얼 PlayerState에서 Data Table로 초기화 했던 부분은 단순한 교육 목적이었기 때문에 지워주자.


가장 먼저 AuraCharacterBase에 Gaemplay Effect 클래스 변수부터 설정한다.

그리고 이어서 주요 Attibutes 값들을 초기화하기 위한 함수도 같이 만들어줄 것이다.

 

AuraEffectActor에서 했던 것처럼, 먼저 AbilitySystemComponent를 가져온 뒤 이를 기반으로 GameplayEffectContextHandle과 GameplayEffectSpecHandle을 생성한다.

이후 ApplyGameplayEffectSpecToTarget 함수를 통해 이미 확보된 Character의 ASC에 Gameplay Effect를 적용한다.

 

이제 해당 초기화 함수의 위치를 정해야 한다.

우리는 InitAbilityActorInfo 함수를 통해 초기화 함수를 가지고 있기에, 해당 함수의 마지막 부문에 초기화한 Attributes에 대한 값들도 같이 초기화 해줄 것이다.

 

다만 서버와 클라이언트 모두에서 호출하는 InitAbilityActorInfo() 함수와 달리, 이 Gamepaly Effect 효과를 적용하는 것은 서버에서만 수행하면 된다.

Attribute 값들은 모두 복제되도록 표시되어있기 때문에, 서버에서 변경하면 클라이언트에서도 변경된다.

하지만 클라이언트와 서버 모두에서 해당 작업을 수행하려는 경우에도 괜찮은데, 이러면 클라이언트가 서버가 다시 복제할 때까지 기다릴 필요가 없어진다.

 

이제 컴파일을하고 Gameplay Effect 기반의 블루프린트 클래스를 만들어주자.

 

그리고 초기화 작업이라 적용 순간에만 값을 할당하면 되기에 Instant 타입으로 Gameplay Effect를 설정해줄 것이다.

여기서 해당 Attribute 값들은 기존 값에 더하는 게 아니라, 초기 기본값을 세팅하는 것이기 때문에 덮어 쓰는 Override를 사용한다.

 

그리고 AuraCharacter로 돌아가서 해당 GameplayEffect를 할당해주자.

 

실행해서 살펴보면 다음과 같이 초기화된 각 Attribute 값들을 확인할 수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함