関数とマクロの違いは?

ブループリント内で使える関数とマクロの違いってなんなんですか?
マクロは実行ピンとかローカル変数が使えるので上位互換のように認識しているんですが、関数にしかない用途みたいなのはあるのでしょうか?

マクロは関数の上位互換ではありません

マクロはパターンを収めたテンプレートのようなもので、実行時に中身が展開(置換)されます
マクロにはローカル変数はありますが、実態は匿名変数であり、真の意味でのローカル変数ではありません(マクロの展開位置によっては値が残ります)
マクロは子クラスでオーバーライドすることができず、他のBPから呼び出すことはできません

関数は戻り値があります(マクロの戻り値はRerouteNodeのようなものです)
関数のローカル変数はスコープが限定されており、関数の終了時に破棄されます
関数はオーバーライド可能で、他のBPから呼び出すことができます

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.