環境
UE4.19.1
Visual Studio 2015 Community
GameModeで登録する初期値の初期化について
ここの部分の初期化についてです。
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; }
継承したクラスを登録したい場合は下記のようになります。
#include "ExampleGameModeBase.h" #include "ExampleCharacter.h" #include "ExamplePlayerController.h" AExampleGameModeBase::AExampleGameModeBase() { DefaultPawnClass = AExampleCharacter::StaticClass(); PlayerControllerClass = AExamplePlayerController::StaticClass(); }