若手レベルデザイナーのよく使うUE4小技集

# はじめに
この記事では、ゲーム業界の若手レベルデザイナーが普段使用しているUE4のショートカットやちょっとした機能を紹介する記事となります。
主だっては、Viewport周りを中心に紹介しています。
あくまで、紹介ですので、解説まではしていません。ご注意を...!

# 動作確認環境
記事内にて、紹介する各種ショートカットなどを確認した環境は以下となります。

* Unreal Engine 4.25.4
* エディターの言語環境：英語

# Viewport系
Viewport周りで使用してるショートカットなど
###フォーカス
> カメラの焦点を選択したオブジェクトに合わせます。

https://docs.unrealengine.com/ja/Engine/UI/LevelEditor/Viewports/ViewportControls/index.html

World Outliner上やViewport上から、Actorを右クリックして頂き、メニュー内からFocus Selectedを選択して頂くと動作します。
ショートカットキーは "Fキー" になっています。
また、Outliner上のActorをダブルクリックしても、同様の挙動を得られます。

###Play From Here
>ビューポート を 右クリック して [Play From Here(ここからプレイ)] を選択して利用できる Play In Editor モードがさらにあります。

https://docs.unrealengine.com/ja/Engine/UI/LevelEditor/InEditorTesting/index.html

###Surface Snapping
Actorを移動させる際、移動させているActorの座標を周囲の地形に這わせて移動させることができます。
SnapはLocationだけではなく、Rotationも合わせてくれるので、Landscapeに対して何か配置する時も楽です。
Viewport右上の地球とグリッドボタンの間のボタンから切り替えできます。(以下の画像)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/e0b8b58d-5c04-dee1-3821-894d5d38f65f.png)

###Grid Snapping
選択しているActorの移動量を変更させることができます。
変更できる数値は、Editor Preferences->Grid Snapping->Decimal Grid Sizes内にプリセットされています。
こちらから、自分好みに数値の追加や削除ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/c3e4752f-0683-5504-cd37-8c3fb131b196.png)


###Detailsパネルのロック
Detailsパネルは、Actorを選択するごとに表示内容が変わりますが、パネル右上の南京錠のマークをクリックするとロックされます。
ロック中は、表示内容が変更されなくなります。
BPなどDetails上に公開されたActor型の変数に対して、World OutlinerからActorをD&Dでアサインする場合などに便利だと思います。

僕は、Detailsパネルを常時4枚使っているので、非常に頻繁に使用します。
![2020-11-17_15h06_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/e34aaa38-920c-d766-fc06-0821640198f2.png)

###Only in Current Level
World Outliner上のActor一覧を現在編集しているレベルの物のみ表示させたい場合に使用します。
World Outliner右下のView Options->Only in Current Levelのチェックを入れて頂くと、Outlinerの中身が現在編集中のレベルの持つActorのみが表示された状態になります。
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/9e1bfb64-05f1-fa67-dc43-6b67fdb919c4.png">

###Cinematic Viewport
主に三分割法のグリッドを出すために利用しています。
Sequencer向けの機能ではありますが、たまに有効化して、レベルを飛び回ることがあります。
https://docs.unrealengine.com/ja/Engine/Sequencer/HowTo/ViewportOptions/index.html

###Eject
エディターにて、ゲーム実行中にプレイヤーから操作を外して、プレイヤーや物を動かしたい。BPにブレークポイントを張りたい場合などで利用しています。
添付画像のツールバー上に表示されているEjectボタンを押して頂くだけで、Ejectできます。
ショートカットはF8キーに割り当てられているため、こちらからEjectすることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/d15c6033-ed1f-5ea7-1b4e-a23d28b52b04.png)

###Keep Simulation Changes
>Simulate In Editor (エディタでシミュレーション) または Play In Editor (エディタでプレイ) の使用中は、アクタのプロパティを編集し、レベルやゲームプレイに対する変更の効果を確認できます。Keep Simulation Changes (シミュレーション変更を維持) を使用して、 これらの変更を行い、保存することができます。保存できる内容には、レベルでのアクタの変形など、 [詳細] タブに表示されるプロパティも含まれます。Keep Simulation Changes の使用後、レベルで選択されたアクタがランタイム コピーから更新されるので、変更がエディタのコピーに反映されます。

https://docs.unrealengine.com/ja/Engine/UI/LevelEditor/InEditorTesting/KeepSimulationChanges/index.html

###Allow Translucent Selection
>チェックが入っている場合、半透明マテリアルが適用されているジオメトリをクリックすると、そのアクタを選択します。

https://docs.unrealengine.com/ja/Engine/UI/LevelEditor/QuickSettings/index.html

有効な状態で作業していると、エフェクトを間違えて選んでしまうことが多々ありますよね。
ショートカットキーは、Tキーです。

###Show Only Modify Properties
Detailsパネル内の目玉ボタンから選択できます。
デフォルトの値から編集が行われたパラメーターのみを表示させる機能です。
その他の項目も作業次第では、頻繁に使う方がいらっしゃるかもしれませんね！
![2020-11-17_15h35_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/b0472aea-be26-c270-8019-b7c22266184d.png)

###Select All Actors With Same Class
現在選択中のActorと同じTypeのLevel上のActorを全選択します。
Actorを選択後、右クリックメニューより、使用できますが、ショートカットキーのCtrl+Shift+Aでよく使用します。

https://docs.unrealengine.com/ja/Engine/Actors/Selection/index.html

実はこの機能は、去年まで知らなかったのですが、Unreal Online Learningで知りました。

###Make Current Level
選択しているActorが格納されているレベルを現在編集中のレベルに切り替える機能です。
対象のActorを選択して、ショートカットキーのMキーもしくは、下の画像の「Level->Make Current Level:"レベル名"」から実行できます。
僕は、配置されているActorがどのレベルに属しているのかを確認するためだけに使用することが多いです。
(Outliner上からでも確認できますが、Outlinerは、Only in Current Levelの表示にしていることが多いので...)
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/35c620c1-48e2-736e-53b5-306b0dc58a26.png">



# Content Browser系
Content Browser上で使用している機能など

###フォルダへの色付け
Content Browserの各フォルダに対して色を設定できます。
フォルダ数が多い場合やDevelopersフォルダ以下の自分のフォルダにのみ色をつけておいたり、自分の使用頻度の高いフォルダに対して色付けしています。
色付けは、フォルダを右クリックして頂ければ「SetColor」で設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/018366d7-9bbc-2907-c7c4-ec5dd0b6496a.png)

###フィルター機能
>プロジェクトには多くのアセットがあるため、 コンテンツ ブラウザ を介して個々のアセットを探すと、時間がかかり、生産性が低下することがあります。そのような場合に役立つのが フィルター機能 です。

https://docs.unrealengine.com/ja/Engine/Content/Browser/UserGuide/Filters/index.html

僕は、「Show Redirector」と「Other Developers」の項目は、常に有効にしています。
Other Developersを有効にしないと、検索をかける際にDevelopersフォルダ以下の自分のフォルダ以外に保存されているアセットが引っかからないんですよね。

###Content Browserのロック
Detailsパネルと同様、Content Browserもロックがかけれます。
ロックをかけることで、「Find in Content Browser」の動作が実行された時に表示内容が変更されなくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/2da23ae4-f644-f417-a496-b6184fe4bef3.png)




# Blueprint系
###Actorが格納されているレベルBPを開く
Actorを選択し、右クリック後「Level->Find in Level Blueprint」で、選択しているActorが属しているレベルBPを開けます。
蛇足ですが、右クリック後のLevelメニュー内は、探したいレベルをLevel Browser上から探し出せたりと結構便利です。

<img width="400" img="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/de7a5908-9421-72d0-74fe-9f60920888c2.png">

###Level Browser上からレベルBPを開く
Level Browser上のゲームパッドボタンを押すと、そのレベルのレベルBPを開けます。
https://historia.co.jp/archives/9138/

ツールバーのBlueprintsから開くこともできますが、
個人的にはサブレベルの数が多い場合など、Level Browser上から開く方が手が早いことが多いです。
![2020-11-25_13h39_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/b2576e4c-2fde-24f7-2bf8-b8bd1d62ade1.png)

###Construction ScriptをActor移動時に走らせないようにする
クラスBP内のClass Settings内に「Run Construction Script on Drag」のチェックを外せば、
レベル上で、該当のクラスBPを移動させた際にConstruction Scriptが走らなくなります。
<img width="400" img="image.png"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/8be598b4-33d8-509e-1889-aa8df120cd96.png">

###Event Graphの使い分け
BPの規模が大きくなったりする場合に処理内容の目的別などでEvent Graphを追加して、使い分けたりしてます。

Event Graphの追加は、My Blueprint内の「New Graph」から追加できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/404ecb4e-a828-e747-40de-3ddf80b85367.png)


# その他
###エンジンの言語設定
僕は、基本英語環境で作業しています。
理由としては、BSPブラシをレベル上に配置した場合、配置したBSPブラシのラベル名に日本語が含まれてしまいます。
僕は、アセットや変数名、関数名などには、半角英数字しか使わないようにしているので、事故が起こらないように基本英語環境で作業しています。
どこかしらの設定でラベル名を英語になるようにできるなら、ぜひ知りたい…

以下の画像は、日本語環境時にBPSブラシをレベル上に配置した場合のラベル名です。
<img width="400" img="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/85b5fb32-459d-c900-58e7-3a0834e7efa3.png">

###Composite Data Table
複数のデータテーブルを1つのデータテーブルとして、扱うアセットになります。
管理上、同じ構造体のデータテーブルを複数に切り分けたい場合に利用しています。
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/e8b85442-5dae-8943-35f2-f1a193243f48.png">

###プロパティマトリックス
Viewport上でもContent Browser上でも選択した大量のアセットに対して、一括でパラメーター変更ができて便利です。
個人的には、Content Browser上で、使用する際にアセット数が多いと、読み込み時間がそれなりにかかる点がネックだと思ってます。
ですが、一番知った時に感動した機能です。

使い方は、以下の公式ドキュメントや、Alweiさんの記事を御覧ください。
https://docs.unrealengine.com/ja/Engine/UI/PropertyMatrix/index.html
https://unrealengine.hatenablog.com/entry/2014/07/16/222615

###PIE実行時にマウスカーソルのフォーカスをゲームに持たせる
「Editor Preferences->Play->Game Gets Mouse Control」にチェックを入れるだけで、設定できます。
PIE実行時に毎回ゲーム画面をクリックするのが面倒！って方は、ぜひ使ってみてください。
僕は、PIEをショートカットのAlt+Pで実行して、コントローラーを握る動作をよくするのですが、コントローラーを握るまでにマウスでクリックする動作が無くなるだけで、結構快適です。
<img width="400" img="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/85ef9f1a-e0e1-3419-b975-bded52e56333.png">

###BP作成時にBeginPlayやTickノードを生成しないように
UE4では、デフォルト状態だと、BP作成時にBeginPlayやTickノードが生成されているのですが、それらを生成してほしくない場合に利用します。
「Editor Preferences->Blueprint Editor->Spawn Default Blueprint Nodes」のチェックを外すと生成されなくなります。

<img width="400" img="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/f86f895d-e162-9d70-417e-ab65df11b912.png">


###Viewport画面上のTutorialのアニメーション
ここのアニメーションが止まってる時は、UE4がんばってるなぁと思ってます。
(~~内心は、落ちるなよ！良いな！？落ちるなよ！！！！~~)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213936/c74df14e-f442-f1ab-de5a-19e42520f35f.png)


# おわり！
今回紹介したのは、普段利用している一部の機能になります。
また、数が溜まったら記事化していこうかなーと思ってたり。

紹介した中にも一部、UnrealOnlineLearningで知った物を記載しています。
UnrealOnlineLearningをしていると、ちょくちょく「えぇ！そんな機能あったの！！！」みたいな発見ができて楽しいです。
みなさんもぜひ...！
https://www.unrealengine.com/ja/onlinelearning-courses

明日は、@tring さんの記事です！