Chapter 38無料公開

📰カスタムイベントとは?イベントを作成しよう [UE5入門チュートリアル #3-12]

Daichi
Daichi
2022.05.28に更新

コメント🐤

今回はカスタムイベントについて解説していきます。実際にカスタムイベントを使ってHPを回復する処理を作成していきます。先に「イベント」について解説しておきます。

そもそもイベントとは?確認しておこう

ブループリントは「どんな時にどんな処理を行うか」を決定します。その「どんな時」を決定するのがイベントで、具体例を挙げると「イベントBeginPlay」や「イベントTick」などの赤色のノードがイベントにあたります。

カスタムイベントでは、「イベント」を作成する事ができます。見ていきましょう。

カスタムイベントとは?

カスタムイベントはイベント自体を作成でき、そのイベントを好きなタイミングで呼ぶ事ができます。

一体どういう事なのでしょうか?簡単なので実際に作ってみましょう↓

①カスタムイベントを簡単に作成する|実践

  1. レベルブループリントを開いて、右クリック > custom eventと検索してカスタムイベントを追加をクリックします。

  2. 名前をEventPrintStringにします。これでイベントが新規作成されました。

  3. 次にBeginPlayノードを作成し、そこからEventPrintSringと検索して、作成したイベントを探しクリックします。これでゲーム開始時に作成したEventPrintStringが呼び出されます。

  4. EventPrintStringのイベントからPrintStringノードを作成して以下のようにします。

  5. これで一旦どうなるかプレイしてみましょう。

    ゲーム開始時にプレイと表示されます。

ノード解説

カスタムイベントを作成すると、イベントを作成でき、そのイベントをどこからでも呼ぶ事が可能です。作成したノード↓ではゲーム開始時にイベントを呼び、イベントが実行されます。

つまりカスタムイベントとはイベントを作成する事ができ、それによりノードを切り離す事ができます。ちなみに今回作成したノードは下のノードと機能は一切変わりません↓

ではカスタムイベントはどんな時に必要になるのでしょうか?それについて話す前にカスタムイベントは変数を渡す事もできるので紹介しておきます。

②カスタムイベントを介して変数を渡す|実践

  1. EventPrintStringを選択した状態で、インプットのプラスボタンをクリックします。これでNewParamという変数が呼ぶ側とイベントに追加されました。

  2. イベントを呼ぶ入力値にGood Morningと入力し、イベント側のNewParamとInStringを接続します。これでGoodMoringというテキストをカスタムイベントを介して渡す事ができました。

  3. プレイするとGoodMorningと表示されました。

    カスタムイベントはこのように変数のデータを渡す事が可能です。

カスタムイベントの完成!


最終的にこんな形になりました↑「Good Moring」というString型のデータがカスタムイベントによって渡されました。

③カスタムイベントを使う必要性とは?

上で作成したカスタムイベントを使用したノードと、下の右画像のノードは全く同じ機能です。では、なぜカスタムイベントを使用する必要があるのでしょうか?

以下の3点においてカスタムイベントを使用する必要が出てきます。

①カスタムイベントを一緒に使用しなければならないノードがある
②カスタムイベントを使う事によって同じ処理を書かなくて済む
③別のブループリントからイベントを呼ぶ事ができる

③は別で解説するとして①と②をそれぞれ解説していきます。

③-①カスタムイベントを一緒に使用するノードがある

例えば一定間隔の時間でノードを実行するノード、SetTimerbyEventがあります。

先ほど行ったカスタムイベントとは若干ノードの組み方が異なりますが、仕組みは同じでこのようにカスタムイベントを使用する事があります。SetTimerbyEventノードについて紹介するとTimeで間隔時間(0.5)を決めて、Loppingにチェックを入れると繋げたカスタムイベントを一定時間毎にゲーム中繰り返し実行します。プレイするとこんな感じになります↓

このようにノードによってはカスタムイベントが必要になる場合があります。残りのもう一つを紹介します。

③-②カスタムイベントによってノードをまとめて管理しやすくできる

カスタムイベントを使用すると、処理を切り離す事ができていつでもどこでも呼べるようになります。例えば回復でも「魔法で回復する」「薬草で回復する」「セーブポイントで回復する」など様々なパターンがあります。回復という同じ処理を毎回書くのはめんどくさいですし、管理も大変です。そこで以下のようにカスタムイベントで「Heal」イベントを作成して回復の処理を別で用意しておく事ができます。

カスタムイベント無しで作った回復する機能↓


HかGキーによってHPというInteger型の整数に+10するというシンプルなノードです。回復の処理を何度も書く必要があり、管理も大変になってきます。

カスタムイベントありで作った回復する機能↓


カスタムイベントを使用して同じ処理(ノード)をまとめられたので、管理が楽で見やすくなります。

コメント🐤

こういったように回復でも方法が色々あるので、カスタムイベントを使用する事で、イベントを呼ぶ側と処理をする側で分けられるというメリットがあります。また③の「別のブループリントからイベントを呼ぶ事ができる」では参照がある場合とイベントディスパッチャーというノードを使用する場合に可能です。詳しくは「イベントディスパッチャーとは?」と「コインと取得枚数を実装する」で解説しています。

まとめ

カスタムイベント = イベントを作成でき、好きなタイミングでそのイベントを呼べるものです。

使用する必要性としては、以下になります。

①カスタムイベントを一緒に使用しなければならないノードがある
②カスタムイベントを使う事によって処理を切り分けてノードを管理しやすくできる
③別のブループリントからイベントを呼ぶ事ができる

ただ、無理してカスタムイベントを使用する必要性はありません。カスタムイベントでなければノードを組めない場合に使用する事になってきます。