Make Unreal REAL.
article thumbnail
Advanced Unreal Engine 5 Multiplayer Gameplay Programming

 

언리얼 에디터가 아닌, VS에서 ActionGameTypes.h라는 헤더 파일을 생성하고 FCharacterData 구조체를 선언한다.

  • 초기 이펙트와 기본 능력을 담는 데 사용된다.

 


FCharacterData 구조체를 담을 Data Asset 클래스를 생성한다.

  • BlueprintType
    BP에서 변수로 사용될 수 있는 클래스이다.
  • Blueprintable
    BP의 부모가 될 수 있는 클래스이다.

 


CharacterDataAsset 형식의 Data Asset 에셋을 생성한다.

 

 

Data Asset의 FCharacterData 구조체의 Effects에 속성의 기본값을 설정하는 초기 이펙트를 등록한다.

 


캐릭터 클래스의 헤더에 ActionGameTypes.h 헤더를 포함한다.

 

Data Asset이 갖고 있는 초깃값을 가져와 다루기 위한 헬퍼 함수와 변수들을 선언한다.

  • CharacterData: Data Asset 에셋에 들어 있는 FCharacterData 구조체의 값을 가져와 담는다.
  • CharacterDataAsset: FCharacterData 구조체를 담고 있는 Data Asset 에셋이다.

 

 

CharacterData 구조체를 복제할 것이므로, GetLifetimeReplicatedProps() 함수도 오버라이드 해 변수를 등록해 주어야 한다.

 


초기화는 PostInitializeComponents() 함수에서 수행하도록 한다.

 


캐릭터 클래스에 헤더를 포함한다.

 

 

헬퍼 함수들을 구현한다.

 

 

CharacterData 구조체를 복제하도록 등록한다.

 


PostInitializeComponents() 함수에서 Data Asset 에셋에 있는 FCharacterData 구조체의 값을 가져와 저장한다.

 


초기 이펙트를 적용하는 ApplyStartupEffects() 함수에서 Data Asset에서 가져온 이펙트를 적용하도록 변경한다.

 

 

기본 능력을 부여하는 GiveAbilities() 함수에서 Data Asset에서 가져온 능력을 부여하도록 변경한다.

 


Data Asset을 통해 속성의 초깃값을 적용하면서 사용하지 않게 된 DefaultEffects, DefaultAbilities, DefaultAttributeSet 변수와 InitializeAttributes() 함수를 주석 처리한다.

 


PossessedBy(), OnRep_PlayerState() 함수에서도 InitializeAttributes() 부분을 주석 처리한다.

 


캐릭터 BP에서 Data Asset 에셋을 지정해준다.

 

 

멀티플레이어 환경에서 테스트 해본다.

  • ` 키를 눌러 콘솔창을 연 후 showdebug abilitysystem을 입력한다.
  • Pg Up, Pg Dn 키를 눌러 캐릭터를 스위칭해본다.

 

데이터 에셋을 통해 속성의 기본값을 초기화하는 데 성공했다.

 

'Unreal Engine > Advanced UE5 Multiplayer Programming' 카테고리의 다른 글

보행 블렌드 스페이스  (0) 2023.05.05
이동 속도, 스태미나 속성 추가  (0) 2023.05.04
속성 기본값 설정  (0) 2023.05.02
GAS 초기 구성  (0) 2023.05.01
GAS의 구성 요소  (0) 2023.04.30
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그