HEXA BLOG

プログラム

HEXA BLOGプログラム2020.2.10

【UE4】便利!FEditorDelegates

ご無沙汰しております。大阪プログラマーのオカリンです。

最近はUE4を用いた開発が盛んで、自分も遅れまいとUE4に関する勉強を行っております。
そんな中UE4用のプラグインを制作する機会がありました。
エディターの各種挙動に連動して機能を実行させる必要があったのですが、
エディターの挙動をどうやったらとれるのか調べるのに苦労しました
そのため備忘録もかねてこちらで紹介いたします。

エディター上の操作の取得は、FEditorDelegatesを利用することで取ることができます。

FEditorDelegates

このデリゲートはレベルの変更、プレイ開始、アクターの操作など、エディターでの基本的な操作に関わるものが用意されています。
便利そうだと思ったものを例として以下に挙げてみます。
NewCurrentLevel
サブレベルを切り替えた際呼ばれます。

MapChange、OnMapOpened
共にコンテンツブラウザから新しいレベルを開いたときに呼ばれます。
後者は開いたレベルのファイルパスを取得することができます。
また、呼ばれる順番はMapChange → OnMapOpenedでした。

OnNewAssetCreated
コンテンツブラウザ上で新しいアセットを作成した際に呼ばれます。
作成したアセットのFactoryを取得できます。

OnNewActorDropped
レベル内に新しいアクターを配置した際に呼ばれます。
Droppedとついている通りドラッグ&ドロップで配置したときにしか反応しません。

OnFocusViewportOnActors
選択したアクターをFキーでフォーカスした際に呼ばれます。
フォーカスしたアクターを取得できます。

BeginPIE、EndPIE
PIE開始時と終了後それぞれで呼ばれます。

PreSaveWorld、PostSaveWorld
レベルの保存前と保存後に呼ばれます。

その他にも多く定義されていますので興味のある方は
Engine/Source/Editor/UnrealEd/Public/Editor.hをご覧ください。

また、今回はFEditorDelegatesについて紹介しましたが、
●FWorldDelegates
●FGameDelegates
●FCoreDelegates
●FCoreUObjectDelegates
●UGameViewportClient
など、エディター上でのアクションに関するデリゲートを定義した構造体やクラスはいくつもあります。プラグイン等でエディターの拡張を行う際は活用してみると、効率の良いツールが作れるのではないでしょうか。

では、今回はこのあたりで、また次回お会いしましょう。

 

【おまけ】
FEditorDelegatesにはPlayInEditor(PIE)に関するデリゲートがいくつかあります。
・PreBeginPIE
・BeginPIE
・PostPIEStarted
・PrePIEEnded
・EndPIE
・PausePIE
・ResumePIE
・SingleStepPIE
・OnPreSwitchBeginPIEAndSIE
・OnSwitchBeginPIEAndSIE

これらがどの順番で、どのタイミングで呼ばれるのか検証してみました。
なお、検証に使用したUEは4.24になります。
エディターの操作は、

① プレイ開始
② 一時停止
③ 1フレーム実行
④ 再開
⑤ SIE切り替え
⑥ PIE切り替え
⑦ プレイ停止

の順で操作しました。
結果としては以下の画像の通りです。

DelegatesTest

想定通りの挙動ですね。ただ、OnPreSwitchBeginPIEAndSIEとOnSwitchBeginPIEAndSIEはともにboolを仮引数として受け取っているのですが、共にPIE・SIEに切り替わる際にtrue、falseが与えられます。
OnPreSwitchBeginPIEAndSIESIEPIEに切り替わる際にTrueが与えられます。
OnSwitchBeginPIEAndSIEPIESIEに切り替わる際にTrueが与えられます。
これらを使用する際は注意が必要ですね。

またまたおまけですがアクターのBeginPlay、EndPlayとBeginPIE、EndPIEが呼ばれる順番についても見てみました。

DelegatesTestWithActor

アクターのBeginPlayはBeginPIEの後に呼ばれ、EndPlayはEndPIE後に呼ばれるようですね。
いつ呼ばれるかは実際に動かしてみないと分からないこともありますので、使用する際は想定通りの動きとなるか試す必要がありそうです。

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE 

NEWS