
언리얼 공부를 기록해보기로 했다.
"이득우의 언리얼 프로그래밍" 을 따라가는 내용을 적어볼 예정이다.
이번엔 게임모드를 통해 간단하게 DefaultPawn과 PlayerController를 설정하겠다.

다음 버튼을 통해 Content에서 ThirdPerson 컨텐츠를 추가한다.


다음과 같은 블루프린트가 추가되는데 화면 우측에 있는 World Setting을 통해 BP_ThirdPersonGameMode를 현재 월드의 GameMode로 설정할 수 있다.
자동적으로 DefaultPawn이 설정되있는 것을 알 수 있는데 ABGameMode를 생성해서 이처럼 설정해보도록 하겠다.

화면상단의 Tools에서 C++클래스 추가를 눌러서 GameModeBase를 상속받는 클래스 ABGameMode를 생성했다.
같은 방법으로 PlayerController를 상속받는 ABPlayerController 클래스를 생성해준다.
AABGameMode::AABGameMode()
{
static ConstructorHelpers::FClassFinder<APawn> ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C"));
if (ThirdPersonClassRef.Class)
{
DefaultPawnClass = ThirdPersonClassRef.Class;
}
//DefaultPawnClass
PlayerControllerClass = AABPlayerController::StaticClass();
}
다음과 같이 AABGameMode의 생성자에서 DefaultPawnClass와 PlayerControllerClass에 각각 설정해준다.
DefaultPawnClass의 경우 블루프린트 클래스를 우클릭하면 나오는 애셋레퍼런스를 가져와서 등록해주고 AABPlayerController는 UClass를 가져오므로 StaticClass()를 등록해준다.
StaticClass는 UClass의 컴파일타임에 생성된 정보를 가져오는것이고 GetClass는 런타임에서 실제 객체의 클래스를 조회할 때 사용하는 것이라고 한다.

그 결과 다음과 같이 잘 설정되었고 문제없이 잘 플레이되는 것을 알 수 있다.