single.php

UEで関数内で[Delay]が使えない場合の対処法

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]ノードと同様の処理がしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です