関連ブログ
- [UE5]PaperZDでプレイヤーキャラを実装してみる(3/3) 2024.10.02UE
- [UE5]PaperZDでプレイヤーキャラを実装してみる(2/3) 2024.09.25UE
- [UE5]PaperZDでプレイヤーキャラを実装してみる(1/3) 2024.09.18UE
CATEGORY
2022.02.09UE5UE/ 初心者向け
執筆バージョン: Unreal Engine 5.0.0(EarlyAccess) |
こんにちは、エンジニアの山中です。
今回は、お世話になっている方も多いであろう
エンジン提供のマクロ関数を
ちょっとだけカスタマイズしてみようと思います。
今回カスタマイズするのは「WhileLoop」です。
条件を満たす間、処理を繰り返したい場合に使用するマクロ関数です。
このマクロ関数を使用する上で最も注意すべきことは
条件の設定ミス、または想定外の処理フローによる
無限ループではないでしょうか。
大体の場合、100万回処理を行う想定では使用しないと思いますし
瞬間的に負荷も掛かってしまいますので
最大でも、指定した回数分だけ処理を繰り返してくれる機能があれば便利そうです。
ということで今回はこの「WhileLoop」に回数制限を加えた
「LimitedLoop」を作成したいと思います。
アセット名は任意で変更していただいて構いません。
先程作成したマクロライブラリを開いて、マクロ関数を定義していきます。
マクロ関数の定義は以上になります。
外部から呼び出すとこんな感じに↓
実装後の全体の処理は↓の通りになります。
以下、細かい処理の実装を追っていきます。まずはローカル変数の定義です。
回数制限用の変数と、全体の継続状態用の変数を用意します。
次に初期化部分です。主にローカル変数の値の初期化を行っています。
処理の流れによって問題が発生しないよう、適切な値を設定します。
次に更新処理です。「LoopBody」の処理を実行する前に
継続状態の更新を行い、必要な情報を揃えます。
最後に実行ピンへの出力部分です。
まず、LimitCountを「10」に設定し、
Conditionを「false」にして、ノードを実行してみます。
次に、Conditionを「true」にした場合です。
これにて有限ループノードの完成です!
無限ループ対策の別の方法として
「ForLoopWithBreak」を使用しても良いかと思います。
が、今回はあくまでカスタマイズの一例として紹介させていただきました。
いかがでしたか?
マクロ関数を自分好みに変更したいといった
場面が出てきた際には、是非カスタマイズをご検討ください。