이득우의 언리얼 C++ 게임 개발의 정석
언리얼 엔진은 게임 점수와 같은 플레이어의 데이터를 관리하기 위한 용도로 플레이어 스테이트를 제공한다.
새로운 플레이어 스테이트를 생성한다.
CoreMinimal.h를 ArenaBattle.h로 변경해준다.
PlayerState 클래스에는 다음 속성이 미리 설계되어 있다.
- FString PlayerName: 별명
- float Score: 점수
여기서는 별도로 int32 타입의 GameScore 변수와 레벨을 표시하기 위한 CharacterLevel 변수를 선언한다.
- InitPlayerData() 함수에서 초깃값을 지정하기 때문에 기본이 무의미하므로 Transient 키워드를 지정한다.
생성자, Getter, 초기화 함수를 구현한다.
- SetPlayerName() 함수로 플레이어 스테이트에 플레이어 별명을 설정할 수 있다.
게임 모드에 기본 플레이어 스테이트를 지정해주기 위해 헤더를 포함한다.
기본 플레이어 스테이트 클래스를 지정해준다.
언리얼 엔진은 플레이어 컨트롤러가 초기화될 때 플레이어 스테이트 객체를 생성하고 AController::PlayerState 속성에 포인터를 저장한다.
- 플레이어 컨트롤러의 구성이 끝난 시점인 PostLogin() 함수에서 플레이어 스테이트의 초기화도 진행해 주는 것이 좋다.
플레이어 스테이트에 설정된 레벨 정보는 실제 캐릭터에 반영해야 한다.
필요한 헤더를 포함한다.
플레이어 컨트롤러가 폰에 빙의할 때 APawn::PlayerState 속성에도 플레이어 스테이트를 저장하므로 폰에서도 바로 가져올 수 있다.
- 대신, 폰에서는 GetPlayerState() 함수를 통해 가져와야 된다.
캐릭터 스탯 컴포넌트의 정보들을 플레이어 스테이트의 레벨에 맞게 갱신한다.
플레이어 스테이트를 활용해 플레이어 데이터를 저장화고 활용하는 데 성공했다.
'Unreal Engine > 이득우의 언리얼 C++ 게임 개발의 정석' 카테고리의 다른 글
HUD UI 바인딩: 이름, 체력, 레벨, 점수 (0) | 2023.03.17 |
---|---|
HUD UI 추가 (0) | 2023.03.16 |
캐릭터 상태 머신 적용 (0) | 2023.03.16 |
섹션에 AI, 아이템 상자 스폰 (0) | 2023.03.15 |
무한 맵을 위한 섹션 제작 (0) | 2023.03.14 |