BLOGブログ

2024.06.26UE5UE/ C++UE/ Editor拡張

[UE5][C++]EUWでPlay In Editorを実行する

執筆バージョン: Unreal Engine 5.1

Editor Utility Widget (EUW)でPlay In Editor (PIE)実行を行う方法の紹介です。

EUWを使ったエディタ拡張を実装している時に、PIE実行(プレビュー実行)を行いたい事があるかと思います。

デフォルトでは、Level Editor SubsystemにEditor Play Simulateというノードが存在しますが、こちらを使用した場合はSimulate In Editorモードとなってしまうため、プレイヤーポーンが生成されない等の挙動がやりたいことに沿わないことがあります。

LevelEditorSubsystem-EditorPlaySimulateノード

Simulate In Editorではなく、Play In Editorを行う為にはC++による実装が必要となります。

 

まず、今回必要な機能を利用するためUnrealEdというモジュールを利用できるようにします。

初期状態のプロジェクトではロードされていない為、プロジェクトのBuild.csファイルに以下の例を参考にUnrealEdモジュール追加の記述をしてください。

あくまで一例なので、ご自身のプロジェクトに合わせて、PublicDependencyModuleNamesまたはPrivateDependencyModuleNamesに”UnrealEd”の追加ができればOKです。

モジュールが利用できる状態になったら、クラスの実装を行います。

今回はULevelEditorSubsystemを継承したクラスとします。
これによりLevelEditorSubsystemの持つ機能もそのまま使うことのできるEditorSubsystemとしてEditorUtility内で利用できます。

サンプルソースコードは以下になります。

作成したMyLevelEditorSubsystem-EditorPlayノード

サンプルの実装により生成されたEditorPlayノード

 

 

ちなみに、Playを停止する場合はEditor End PlayまたはLevel Editor SubsystemのEditor Request End Playノードを利用することで止めることができます。

Editor End PlayとLevel Editor Subsystem-Editor Request End Playノード

 

Editor Utility WidgetやEditor Utility BlueprintでのPIEが出来るようになると自動化やツール制作での選択肢が増えますので、参考になれば幸いです。