Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

언리얼 엔진은 게임 점수와 같은 플레이어의 데이터를 관리하기 위한 용도로 플레이어 스테이트를 제공한다.

 

새로운 플레이어 스테이트를 생성한다.

 

 

CoreMinimal.h를 ArenaBattle.h로 변경해준다.

 

 

PlayerState 클래스에는 다음 속성이 미리 설계되어 있다.

  • FString PlayerName: 별명
  • float Score: 점수

 

여기서는 별도로 int32 타입의 GameScore 변수와 레벨을 표시하기 위한 CharacterLevel 변수를 선언한다.

  • InitPlayerData() 함수에서 초깃값을 지정하기 때문에 기본이 무의미하므로 Transient 키워드를 지정한다.

 

 

생성자, Getter, 초기화 함수를 구현한다.

  • SetPlayerName() 함수로 플레이어 스테이트에 플레이어 별명을 설정할 수 있다.

 

 

게임 모드에 기본 플레이어 스테이트를 지정해주기 위해 헤더를 포함한다.

 

 

기본 플레이어 스테이트 클래스를 지정해준다.

 

 

언리얼 엔진은 플레이어 컨트롤러가 초기화될 때 플레이어 스테이트 객체를 생성하고 AController::PlayerState 속성에 포인터를 저장한다.

  • 플레이어 컨트롤러의 구성이 끝난 시점인 PostLogin() 함수에서 플레이어 스테이트의 초기화도 진행해 주는 것이 좋다.

 

 

플레이어 스테이트에 설정된 레벨 정보는 실제 캐릭터에 반영해야 한다.

 

필요한 헤더를 포함한다.

 

 

플레이어 컨트롤러가 폰에 빙의할 때 APawn::PlayerState 속성에도 플레이어 스테이트를 저장하므로 폰에서도 바로 가져올 수 있다.

  • 대신, 폰에서는 GetPlayerState() 함수를 통해 가져와야 된다.

 

캐릭터 스탯 컴포넌트의 정보들을 플레이어 스테이트의 레벨에 맞게 갱신한다.

 

 

플레이어 스테이트를 활용해 플레이어 데이터를 저장화고 활용하는 데 성공했다.

 

profile

Make Unreal REAL.

@diesuki4

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

검색 태그