UE5のSet Timer by Event
UE5のSet Timer by Eventのノードは時間経過に関わる様々な操作ができ、使用頻度が高いノードの一つだ。
詳しく詳細を紹介していく。
Set Timer by Eventの一覧目次
Set Timer by EventとはSet Timer by Eventの使い方
目次にもどる
Set Timer by Eventとは
Set Timer by Eventとは具体的には一定時間の経過後にイベント(赤いノード)を実行できるノードである。
![UE5のSet Timer by Event](images/timetop.jpg)
Eventにはイベントを指定。
Timeには時間(秒)を指定する。
Timeで指定した時間がたった後に、Eventで指定したカスタムイベントが実行される。
Loopingにチェックが入っていないなら、Eventの実行処理は1回のみ行われる。Loopingにチェックをした場合にはループが起こり、Timeの時間が経つたびにイベントが実行されるようになる。
Set Timer by Eventのタイマー変数を指定し、操作して停止させることも可能。詳しくは後述する。
目次にもどるSet Timer by Eventの使い方
Set Timer by Eventの使用例を紹介していく。
今回はレベルブループリントに以下のようにノードを配置した。
![UE5のSet Timer by Event](images/timezentai.jpg)
なお、Print String、Event BeginPlay、計算ノード、Branchなどの条件分岐ノードがわからない場合は、先に以下の記事を確認して基本的なノードについて確認してみてほしい。
アンリアルエンジンのノードの一覧では、今回作った処理の説明をしていく。
Event BeginPlayでゲーム起動時に後続の処理が1回だけ実行される。
Set Timer by Eventがあり、Timeには5と指定しており、Eventにはカスタムイベント(Add Custom Eventで検索すれば出せる)の「Three」を作成して指定している。よって5秒経つと「Three」が呼び出され、その後も5秒間隔で「Three」が呼び出されることになる。
![UE5のSet Timer by Event](images/time (1).jpg)
カスタムイベントは呼び出されると後続の処理を行うことができる。カスタムイベント「Three」の後続では変数の計算を行っている。
画面左の変数ビューでCount(integer)という整数が入る変数を作ってドラッグ&ドロップして配置し、そこに1を加算した値をCountにセット(変数の中身を書き換える)している。セットはSet+変数名で検索すれば配置可能。
![UE5のSet Timer by Event](images/time (4).jpg)
セットの次のノードとしてPrint Stringを配置している。Countの変数の値をString(文字列型)に変換して、ゲーム実行時に画面の左に表示できるようにしている(セットのCountからPrint StringのIn Stringへワイヤーを伸ばしてやれば自動的に変換ノードが出る)。
ここで一度、Set Timer by Eventの後続を見てほしい。
![UE5のSet Timer by Event](images/time (2).jpg)
Set Timer by EventのReturn Valueワイヤーを伸ばし、「Promote to variable」と検索すればタイマー変数をセットできるノードが出せる(Promote to variableは変数への昇格を示す。このノードに限らず使えるので覚えておこう)。
この変数を操作することでループの停止などが可能となる。
Print Stringの後続のBranchでCountの値が3以上の場合、Set Timer by Eventのタイマー停止を行っている。
![UE5のSet Timer by Event](images/time (3).jpg)
タイマーを停止するノードは左にある変数ビューから「Three Time」の変数をドラッグ&ドロップし、そこからワイヤーを出し「Clear and Invalidate Timer By Handle」を検索して出そう。このノードが実行されることでタイマーが停止され、ループが止まる。
ゲーム実行すると、Event BeginPlayでSet Timer by Eventのループが開始され、5秒後にCount(デフォルト値は0)が1加算されて、Print Stringにより画面左に「1」と表示される。ループにより5秒後に再度イベント処理が行われ、その時にはCountが2となっているのでPrint Stringにより画面左に「2」と表示される。同様に5秒後には3と表示される。3と表示された後、BranchのCountが3以上の条件がtrueとなるので、Set Timer by Eventのタイマーが停止しループが行われなくなり、この後は処理は起こらない。