【UE4】BPをキレイにしよう:折りたたみ編
この記事は、「ひとりUE4Advent Calendar 2017」の1日目の記事です。
qiita.com
前回はコメント編として、
dfkfuturelab.hatenablog.com
このような記事を書きましたが、今回は折りたたみ編です。
折りたたみってなんだ
ブループリントで処理を書いていくと、どんどんイベントグラフの使用面積が大きくなっていきます。
これはこれで確かにめんどくさいのです。
前回のラストに貼ったこのスクリーンショットも、見やすくなったものの、一つ一つの処理を見ていこうとするとやはり大きいと言わざるをえないでしょう。
折りたたみには種類がある
試しに折りたたみたいノードを範囲で囲って、右クリックしてみると、こんなのが出てきました。
この赤く囲んだところが折りたたみ処理です。
「ノードを折りたたむ」
「関数に折りたたむ」
「マクロに折りたたむ」
この3つの処理から、その場その場にあったものを選ぶ形になります。
関数とマクロの違いはコチラで紹介する3つのブログ
UE4 関数とマクロの違いについて 凛(kagring)のUE4とUnityとQt勉強中ブログ
katze.hatenablog.jp
unrealengine.hatenablog.com
をぜひご一読ください。
ノードを折りたたむ場合
「ノードを折りたたむ」で折りたたむ場合、
このように新しいイベントグラフが生成され、そこに畳まれます。
しかし、これはイベントグラフであり、関数でもマクロでもないため
「複数個置くことができない(コピペしようとすると更に新しいイベントグラフが作られる)」
というところに注意してください。
そのため、「一つのイベントをまるまるくくってわかりやすくする」などの方法が良いかもしれません。
なので、今回は長かったイベント4つを折りたたんでみましょう。
こうなりました。この時点で、ブループリントを開いたときの見やすさはピカイチです。
関数に折りたたむ場合
(今回のBPでは関数にする予定の部分がないので、たたみません)
関数に折りたたむ場合は、先ほどとは違って新しい関数ノードが生成され、そこに畳まれます。
関数の一番の特徴は、関数内でローカル変数を持てるということです。
イベントグラフとは違い、作った関数はいくつもコピペして使うことが出来ます。
なので、何度も使いそうな部分は関数やマクロにすると良いかもしれません。
関数の中では、TimelineノードやLatentノードなど、一部のノードが使えないという制限がありますが、
代わりにPureフラグを立てることで実行ピンの接続を不要にできます。
これは使い所を間違えると処理がすごいことになるので、ヒストリアさんのこちらのブログを参考にして、
使い所を見極めると良いと思います。
historia.co.jp
マクロに折りたたむ場合
マクロに折りたたむ場合も、関数と同様新しいマクロノードが生成され、そこに畳まれます。
これもいくつもコピペして使えます(というかそのための……というか……)
インライン化機能もついており、実行時にはノードが展開されるので、結局マクロの中身全部をいくつもコピペするような形になります。
そのため、関数とは違って内部で値を保存したり…というのには不向きです。
しかし関数とは違って複数の出力ピンを持てたり、ノードの制限がなかったりとメリットも多いです。
マクロを使う際は関数のように呼び出しを行うのではなく、実行時にマクロの中身がマクロの置かれた場所へ置き換えられて実行されるので、
速度的なコスト面でも良いことがあるそうです。
unrealengine.hatenablog.com
そのあたりのことはalweiさんのブログで書かれてますよー。
というわけで幾つかのものをマクロにしてみました。
「こういう処理するためのマクロです」というコメントがついていれば、何かその処理で問題が起きた時に、
すぐに確認することが出来ます。
こうして……
処理ごとにイベントグラフへ折りたたみ、マクロにできそうなところをたたんで、それぞれの処理にコメントを付けたのがこれです。
最初は全部のイベントがごった煮になってましたよね、覚えてますか?
↑元々はこれでしたね(自分の傷をえぐりまくるスタイル)