Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 配列要素の処理をForEachLoopなしで行う

新年一発目の記事です。今年もどうぞよろしくお願いいたします。
まずはブループリントのちょっとしたTipsから。

さて今回はブループリント内で配列を扱った時に、配列要素に対する処理を行う場合、通常であれば"ForEachLoop"ノードなどを使うことになるはずです。

ここで自作のアクタークラスを配列にして自作関数を呼び出すと以下のようになるはずです。

f:id:alwei:20170114131204p:plain

特に違和感はないですね。
が、実は以下のようにしても呼び出しが可能です。

f:id:alwei:20170114131322p:plain

え?っと思うかもしれません。
試しにこれで関数を処理させると問題なく配列要素の数だけ関数が呼び出されています。

普段ForEachLoopを組んでいるところが少しだけ楽になるかもしれません。
あと気になるのが処理速度。少し検証してみました。

f:id:alwei:20170114132442p:plain

アクターを約50000個スポーンさせます。

f:id:alwei:20170114132602p:plain

キーを押した時に"Now"ノードで現在時間を取得し、秒とミリ秒だけ前後時間を表示させます。これを引いた時間が処理にかかった時間です。
結果は以下の通り。

f:id:alwei:20170114132745p:plain

それぞれ10回やってみました。
ほとんど誤差の範囲かもしれませんが、明確な差がでています。どうやらやはりForEachLoopはない方が高速なようです。ただし、これはエディターの中であり、Shipping時に最適化される可能性はあるかもしれません。

とりあえず特に問題がなければForEachLoopなしで配列要素の処理をさせてもよさそうです。