概要
あるクラスから別のクラスを呼び出す方法を忘れてしまうので、知っている範囲でまとめていきます。
・この記事のクラス名は全てSample + クラス名とします。
・引数からキャストする方法は除外することにします。
Characterクラスから別クラスを呼び出す
SampleCharacter.cpp
// GameMode
ASampleGameMode* SampleGameMode = SampleGameMode == nullptr ? GetWorld()->GetAuthGameMode<ASampleGameMode>() : SampleGameMode;
// GameState
ASampleGameState* SampleGameState = Cast<ASampleGameState>(UGameplayStatics::GetGameState(this));
// PlayerState
ASamplePlayerState* SamplePlayerState = SamplePlayerState == nullptr ? GetPlayerState<ASamplePlayerState>() : SamplePlayerState;
// PlayerController
ASamplePlayerController* SamplePlayerController = SamplePlayerController == nullptr ? Cast<ASamplePlayerController>(Controller) : SamplePlayerController;
GameModeクラスから別クラスを呼び出す
SampleGameMode.cpp
// GameState
ASampleGameState* SampleGameState = GetGameState<ASampleGameState>();
// PlayerController (全てのコントローラーを取得しています)
for (FConstPlayerControllerIterator It = GetWorld()->GetPlayerControllerIterator(); It; ++It)
{
ABSamplePlayerController* SamplePlayer = Cast<ASamplePlayerController>(*It);
}
GameStateクラスから別クラスを呼び出す
SampleGameState.cpp
// PlayerController
ASamplePlayerController* SamplePlayer = Cast<ASamplePlayerController>(GetWorld()->GetFirstPlayerController());
PlayerStateクラスから別クラスを呼び出す
SamplePlayerState.cpp
// Character
ASampleCharacter* SampleCharacter = SampleCharacter == nullptr ? Cast<ASampleCharacter>(GetPawn()) : SampleCharacter;
// PlayerController
ASampleController* = SampleController == nullptr ? Cast<ASamplePlayerController>(SampleCharacter->Controller) : SampleController;
PlayerControllerクラスから別クラスを呼び出す
SamplePlayerController.cpp
// Character
ASampleCharacter* SampleCharacter = Cast<ASampleCharacter>(GetPawn());
// GameMode
ASampleGameMode* SampleGameMode = SampleGameMode == nullptr ? Cast<ASampleGameMode>(UGameplayStatics::GetGameMode(this)) : SampleGameMode;
// GameState
ASampleGameState* SampleGameState = Cast<ASampleGameState>(UGameplayStatics::GetGameState(this));
// PlayerState
ASamplePlayerState* SamplePlayerState = SamplePlayerState == nullptr ? GetPlayerState<ASamplePlayerState>() : SamplePlayerState;
ほかにも
.cpp
// その他
UGameplayStatics::GetAllActorsOfClass(this, 呼び出したい任意のクラス::StaticClass(), クラスを格納する任意の変数);