LoginSignup
0

More than 3 years have passed since last update.

UnrealC++でGameViewかを取得する

Last updated at Posted at 2020-09-21

はじめに

突然ですが、UE4の機能である「Game View」をご存知でしょうか?
そう、レベルエディタでGキーを押すことでボリュームのフレームとかが消えるあれです。
私は「ue4 level editor g key」とかで調べて初めてこれが「Game View」ということを知りました(1年半くらいUE4を触っているのに知らなかった...)。
そんな「Game View」の状態かを取得する方法をご紹介しようと思います。

ビューポートの基本 | Unreal Engine ドキュメント

取得方法

タイトルでお気づきの方も多いと思いますが、BPからは取れません。そのため、UnrealC++でBPに公開してあげる必要があります。

TestFunctionLibrary.cpp
#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」と言うのを知らないとエディタ上で入力を取ろう!とかそういった方向に向かってしまう(経験者は語る...)可能性がありますので、こちらの記事が同じ問題に出くわした方のお役に立てば幸いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0