|
執筆バージョン: Unreal Engine 5.7
|
レベルデザイナーのみなさん!
ショートカットキーやエディタユーティリティウィジェット(以後EUW)で作業の時短できてますか?
今回はレベルデザイナーだったらよく使う(かもしれない)、
「ブループリントアクターとスタティックメッシュのTransform情報をコピペするEUW」
について実装方法と使用方法を本記事にてご紹介したいと思います。
始めに
そもそも、EUWとは?何がいいの?
ざっくり言ってしまうと、エディタ上に新たな実行UIを追加できる要素です!
自分で作成した処理をワンボタンで処理したりすることができて、慣れるととても便利で効率化に繋がります。
(公式ページ)
また、今回の主題として上げてますが、レベルデザインをしている最中に、
「ドアフレームのスタティックメッシュをドアのブループリントの位置と回転に合わせて配置したい」や
「スタティックメッシュの台座の位置にギミックブループリントを配置したい」など
思ったことはありませんか?ありますよね?
一応Tranformの情報丸々のコピペは同じオブジェクト区分(StaticMesh⇔StaticMesh、BP⇔BP)では可能であり、
異なるオブジェクト区分(StaticMesh⇔BP)でもLocationとRotationを交互にコピペすることは可能です。
しかし、どちらかをペーストした後に対象を見失ったり、位置が被ってZファイトしすぎて対象が選択できなかったり、
いちいち別項目を選択してコピーして貼り付けるなどしていると、ストレスが溜まってしまいますね…!
そこで、今回はTransform情報をワンボタンでコピーして、ワンボタンでペーストできるEUWの作り方を解説します。
今回サンプルとして使用するUEのバージョンはUE5.7となっており、FirstPersonのテンプレートレベルで試していきます。
(ブループリントのアクターとスタティックメッシュがあればどのプロジェクト/サンプルレベルでも構いません)

EUWの作り方
まずは今回の核となるEUWの作成方法から説明していきます!
①ContentBrowser上で右クリックを行い、「EditorUtilities」から「EditorUtilityWidget」を選択します

②中身を開き下記のような構成で作ります

③ボタンから「OnClicked」を選択肢、Graphを開きます

④以下のノードをつなげれば、とりあえず今回目指していた機能が出来上がります!


動作確認
※作成したEUWを右クリックし、「Run Editor Utility Widget」でウィジェットが表示されます

このようにスタティックメッシュのScale以外の情報が一括で保存され、ブループリントアクターに対して貼り付けを行うことができるようになりました。
しかし、これだと以下の点で使いずらさが残っているため、おまけとしてこちらの解決法も記載します!
- ペーストした対象が離れた場所に一気に行き過ぎてわからなくなる
⇒DrawDebugノードで反映先に大きな目印がデバッグ表示として見えるようにする
- 操作をUndo/Redoしようとしても、EUWで行った操作が反映されない
⇒Transactionノードを使用して、EUWでのアクションが取り消し可能なものにする
上記2つの機能は他のEUW汎用的に使いやすく、幅広く使う事をお勧めいたします。
DrawDebugノードで対象位置をわかりやすくする
「DrawDebug」というノードには様々な種類があり、用途によって表示する印を変えることができます。
今回は場所をわかりやすくしたいので矢印のデバッグ表示を使用します。
組み込んだ後の処理(追加分は緑のコメント領域となります):

①先程の処理の後ろにDrawDebugArrowのノードを追加し、矢印の開始位置と終着点を設定(今回は見やすいように対象から3000uu上まで表氏されるように)
②ArrowSizeで矢印の大きさを設定し、LineColorで色を設定
③DurationとThicknessで表示秒数と太さを設定
動作確認
この状態でコピー、もしくはペーストを押してみると下記のような大きな矢印がエディタ上に表示されます。

こうすれば、画面を見わたすだけでどこに反映されたかわかりやすくなりますね!
Transactionノードで行った操作をUndo/Redoできるようにする
今までいろんなEUWを作って作業の効率化を図っていましたが、毎回Undo/Redoが効かない問題で苦しんでいましたが、
最近下記記事を教えて頂き私のEUW人生(?)に革命が起きたのでこちらでご紹介させて頂きます。
本記事では詳細などについては省きますが、今回の実装でどのように実装すればいいかを記述します。(仕組みや詳細については上記記事をご参照ください)
組み込んだ後の処理(追加分は黄色のコメント領域となります):

①処理の頭に「BeginTransaction」と「EndTransaction」のノードを追加します
②Undo/Redoの対象に含むオブジェクトを「TransactObject」ノードに登録します(今回はSelectedActorsを登録します)
動作確認
上記処理を組み込んだ後にペースト操作を行い、Ctrl+Z操作を行うとちゃんと操作を巻き戻すことができるのを確認できます。
※Ctrl+Y操作でやり直し操作も行えます。
最後に
今回作成したEUWはとてもシンプルなものですが、元々は無い機能を可能にしています。
なので「公式が用意してないから無理か…」とあきらめずに、
色々と調べてみると案外パパッと求めている機能が作れてしまうかもしれません!
今回作ったEUWにどんどん追加していくも良し、機能毎にEUWを分けて使用していくのも良し!
使いやすい、作業が効率化されるエディタを作成して優秀なレベルデザイナーを目指しませんか?