Unreal Engine 5で開発する過程でハマった関数内で[Delay](一定の間隔を空ける)の処理がしたい場合の対処法を備忘録的に投稿します。
[Delay]ノードは関数では使えない
Unreal Engineの初見殺しである、関数内で使えないノード。
その対象に[Delay]も入っています。
実行ピンからドラッグして、検索してもヒットしません。
どうして使えないは、この記事では割愛しますが[タイムライン]などフレームを跨る処理をするノードは関数内では使えないのがUEの仕様なのです。
Microsoftのような親切設計であれば、一応検索されて選べないとか選択後に[使えない]と警告メッセージが出そうですが、UEは甘くない。
関数内で、表示されない[Delay]ノードを一生懸命に探していることは多々あります。
使えないのは仕方がないので、別のノードが用意されています。
[Set Timer by Event]と[Set Timer by Function Name]ノード
どちらも関数内でも配置可能なノードで[Time]ピンで指定した時間を待って[Event]や[Function Name]で指定した次のノードを呼び出してくれます。
[Looping]を有効にすると間隔を空けて処理が続行されます。
その場合は[Set Timer by …]ノードの戻り値を[Timer Handle]型の変数で保存して
[Set Timer by …]で指定した[イベント]や[関数]内で[Clear and Invalidate Timer by Handle]で終了します。
[Looping]を使わずに、1回だけの間隔を空ける場合はTimer Handleは必要ありません。呼び出す関数やカスタムイベントが1つ追加になりますが[Delay]ノードと同じ様な処理を、関数内でも使えることになります。
まとめ
今回は短い記事になりましたが、Unreal Engine 5の関数内で[Delay](一定の間隔を空ける)の処理がしたい場合について書きました。
関数内では[Delay]ノードが使えないため[Set Timer by Event]と[Set Timer by Function Name]ノードを使って設定した時間を経過させることが可能です。
Unreal Engine で関数内で[Delay]ノードと同様の処理がしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。



