始めまして。こちらで質問をさせて頂きます。
現在、私はブループリントで制作した
ゲームステートに ステータス等の情報を設定し、
それを外部のC++のPawn C++クラスから呼び出そうと考えています。
Game State (以後、“Status”) には、“Switch_A” と言うBoolean が含まれています。変数はPublic です。
最終的に、C++側で"Status"から読み込んだ"Switch_A" を使い、条件分岐等を行う予定です。
しかし、C++側でどのようなコードを書けば、「ゲームステートのブループリントのデータ」を呼び出せるかが分かりません。
どなたかUE4でのC++に詳しい人がいましたら、少し教えて貰う事は出来ませんでしょうか?
よろしくお願いします。
C++ で GameState を取得するのは以下のコードで取得出来ます。
auto state = GetWorld()->GetGameState<AGameState>();
// プロパティの取得
state->hoge;
しかし、Blueprint で作成したクラスを取得するのはわからない(というよりあまり推奨されない?)のですが、下記のように C++ でベースのクラスを作成して Blueprint でそのクラスを継承して、GameMode から指定することで、いかのようにしてプロパティを取得することが可能です。
ベースの TestGameState
UCLASS()
class UE4LAB_API ATestGameState : public AGameState
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere)
int32 hoge;
};
Pawn にて取得する際のコード
void ATestPawn::BeginPlay()
{
Super::BeginPlay();
auto state = GetWorld()->GetGameState<ATestGameState>();
GLog->Log(FString::FromInt(state->hoge));
}
この方法を試してみたら何とかできそうです。
丁寧にコードまで載せてくれてありがとうございました。