#はじめに
突然ですが、UE4の機能である「Game View」をご存知でしょうか?
そう、レベルエディタでGキーを押すことでボリュームのフレームとかが消えるあれです。
私は「ue4 level editor g key」とかで調べて初めてこれが「Game View」ということを知りました(1年半くらいUE4を触っているのに知らなかった...)。
そんな「Game View」の状態かを取得する方法をご紹介しようと思います。
ビューポートの基本 | Unreal Engine ドキュメント
#取得方法
タイトルでお気づきの方も多いと思いますが、BPからは取れません。そのため、UnrealC++でBPに公開してあげる必要があります。
#include "Editor.h"
#include "EditorViewportClient.h"
bool UTestFunctionLibrary::IsInGameView()
{
if (GEditor)
{
if (FViewport* ActiveViewport = GEditor->GetActiveViewport())
{
if (FEditorViewportClient* ViewportClient = StaticCast<FEditorViewportClient*>(ActiveViewport->GetClient()))
{
return ViewportClient->IsInGameView();
}
}
}
return false;
}
こちらの関数を作るには「UnrealEd」モジュールが必要ですので忘れずに追加してください。
#おわりに
プラグインなどでDrawDebug~系で実装したデバッグ表示などは「Game View」の状態でも表示されてしまうので、こちらの方法で状態を取得してちゃんと消えるようにすると気の利いたプログラマーになれるのではないでしょうか。
そもそも「Game View」と言うのを知らないとエディタ上で入力を取ろう!とかそういった方向に向かってしまう~~(経験者は語る...)~~可能性がありますので、こちらの記事が同じ問題に出くわした方のお役に立てば幸いです。