はじめに
UnrealEngineのBPの記述を整理する方法として、下記図のようにノードと関数とマクロが備わっています。
ではそれぞれなにが違うのでしょうか。
その違いについて調べてみたのでこの記事でまとめてみたいと思います。
公式による説明
ノードとは
ノード は、イベント、関数呼び出し、フロー制御、変数等のオブジェクトです。 これらは、オブジェクトを含んだ特定のグラフやブループリントの機能性を定義するために グラフで使用します。
公式のURL:https://dev.epicgames.com/documentation/ja-jp/unreal-engine/nodes-in-unreal-engine
関数とは
関数 は、ブループリントで他のグラフから実行または呼び出しができる 特定の ブループリント に属しているノードグラフです。関数には、ノードによって指定され、単一の実行出力ピンを含む関数名がつけられた エントリーポイントがあります。関数が別のグラフから呼び出されると、出力実行ピンが有効になり、 接続されたネットワークが実行されます。
公式のURL:https://dev.epicgames.com/documentation/ja-jp/unreal-engine/functions-in-unreal-engine
マクロとは
ブループリントマクロ または マクロ は、本質的にノードの折り畳まれたグラフと同一です。トンネルノードで指定される エントリーポイントと出口点があります。それぞれのトンネルは、別のブループリントやグラフに使用されるとマクロノード上で可視化できる 実行またはデータピンがいくつもあります。
公式のURL:https://dev.epicgames.com/documentation/ja-jp/unreal-engine/macros-in-unreal-engine
意訳(筆者の解釈に準拠)
これらの公式を見て筆者なりに説明してみると以下のようになります。
-
ノードは親BPに1処理として表示されるすべての機能の総称。
関数もマクロもノードの一種になる。
ノードを折りたたむというのは複数のノードを一個にまとめたように見せるということで、多くの処理でごちゃごちゃしてしまった親BPを見やすくすることができる。
-
関数は簡単な処理をまとめた機能の総称。
同じ処理がBP内で存在する時共通化することで保守の工数を減らすことができる。
-
マクロは難しい処理をまとめて1処理にした機能の総称。
関数ではできないけどノードではできることを共通化するのに使用。
ノードとの違いは複数箇所で使用するかどうか。
使用例
ノード
(関数とマクロ以外の場所で使う処理全てになるので、例は特にありません。)
関数
- 与えられた引数を2を足して3倍する
- 3倍したものから4引いて5をかけた値が10より大きいかどうかの値を返す
※主に数値を特定のロジックで整形する処理の共通化で使用します。
マクロ
- Loop処理
- Do Once処理
※主にイベント管理を必要とする処理の共通化で使用します。
まとめ
- ノードも関数もマクロも何かの処理を指す
- 関数もマクロもノードの一種といえる
- 関数は簡単な処理をまとめたもので、マクロは難しい処理をまとめたもの
おわりに(余談)
筆者はこれまでいろんな場所でノードという言葉は聞いてきたのですが、処理の塊のことというのは知らず、ぼんやり処理の変わり目(分岐の条件句)だと思っていたので、その誤解を晴らすことができてよかったです。
このようにこの記事でみなさんの曖昧だった部分を少しでも明らかにできていれば幸いです。