PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UE4 C++でGameModeの初期化を行う方法

環境

UE4.19.1
Visual Studio 2015 Community


GameModeで登録する初期値の初期化について

ここの部分の初期化についてです。
f:id:PaperSloth:20180422161755p:plain

C++で作成したGameModeBaseだと編集できないのですが
Blueprintだと楽に編集ができますね。
ここをC++側で編集する方法について書きます。

GameModeBaseに登録されているのは下記のような処理です。

AGameModeBase::AGameModeBase(const FObjectInitializer& ObjectInitializer)
    : Super(ObjectInitializer.DoNotCreateDefaultSubobject(TEXT("Sprite")))
{
    // 省略

    DefaultPawnClass                     = ADefaultPawn::StaticClass();
    PlayerControllerClass                = APlayerController::StaticClass();
    PlayerStateClass                     = APlayerState::StaticClass();
    GameStateClass                       = AGameStateBase::StaticClass();
    HUDClass                             = AHUD::StaticClass();
    GameSessionClass                     = AGameSession::StaticClass();
    SpectatorClass                       = ASpectatorPawn::StaticClass();
    ReplaySpectatorPlayerControllerClass = APlayerController::StaticClass();
    ServerStatReplicatorClass            = AServerStatReplicator::StaticClass();
}

例えばGameModeBaseを継承したGameModeでnullptrを設定するとNoneになります。

AExampleGameModeBase::AExampleGameModeBase()
{
    DefaultPawnClass = nullptr;
}

f:id:PaperSloth:20180422163144p:plain

継承したクラスを登録したい場合は下記のようになります。

#include "ExampleGameModeBase.h"
#include "ExampleCharacter.h"
#include "ExamplePlayerController.h"

AExampleGameModeBase::AExampleGameModeBase()
{
    DefaultPawnClass      = AExampleCharacter::StaticClass();
    PlayerControllerClass = AExamplePlayerController::StaticClass();
}

f:id:PaperSloth:20180422170729p:plain