29.カスタムイベントとは?
🐈:今回はカスタムイベントと呼ばれるノードについて解説していきます。事前に「イベント」の意味について理解する必要があるので解説しておきます。
先に「イベント」の意味を理解しておこう
先にイベントについて解説しておきます。ブループリントでは「どのタイミングに何の処理を行うか」を決定します。その「処理を行うタイミング」を決定するノードが"イベント"にあたります。
例えば「処理を行うタイミング」を決定するイベントノードの例としては「イベントBeginPlay」や「イベントTick」などの赤色のノードが該当します。
https://scrapbox.io/files/65b9d6b4d569fc0025cde077.jpg
🐈:こういった「処理を行うタイミング」を決定するイベントを自分で作成する事ができるのがカスタムイベントになります。ではカスタムイベントについて解説していきます↓
カスタムイベントとは?
カスタムイベントとは自分で作るイベントノードの事になります。作成したカスタムイベントは好きなタイミングで呼んで実行する事ができます。
https://scrapbox.io/files/65b9d706a748a600242c229a.jpg
つまりカスタムイベントとは「処理のタイミングとなるイベントを作成できるノードの事」になります。
🐱このカスタムイベント難しそうですが、実は超簡単に作成する事ができます。まずは簡単にカスタムイベントを作ってみましょう!
🌟Step1:簡単にカスタムイベントを作ってみよう
ではカスタムイベントを作成していきます。
レベルブループリントを開いて、右クリック > custom eventと検索して「カスタムイベントを追加」をクリックします。名前を「MyCustomEvent」とします。
https://scrapbox.io/files/65b9d7a015a48b0025b01f5e.gif
こんな感じにカスタムイベントが作成されました↓カスタムイベントの名前もF2キーでいつでも変更できます。
https://scrapbox.io/files/65b9d7d04a1d430024e67464.jpg
これでカスタムイベントを作成する事ができました。
BeginPlayノードを作成し、そこから「MyCustomEvent」と検索して、作成したカスタムイベントの呼び出しノードを追加します。
https://scrapbox.io/files/65b9d8088783fe002373a59d.jpg
最後に解説するので一旦作って、プレイする所まで進めましょう。
MyCustomEventからPrintStringノードを作成します。これで完成です。
https://scrapbox.io/files/65b9d830c0e77e0025e0a651.jpg
プレイしてみましょう。ゲーム開始時にHelloとテキスト表示されます。
https://scrapbox.io/files/65b9d86c55ca390024bf4375.jpg
作成したノード解説
カスタムイベントを作成すると、そのカスタムイベントはいつでも呼んで実行できるようになります。カスタムイベントを呼ぶと、カスタムイベントから後続のノードを実行します。
https://scrapbox.io/files/65b9d87e46ce270024a0d458.jpg
このノードについて解説していきます。イベントBeginPlayから作成したカスタムイベントを呼びました。呼ぶと、赤色のカスタムイベント本体である「MyCustomEvent」から後続のノードが実行されます。つまり結果的に* 「ゲーム開始時にテキストを表示する」という機能になる訳です。
なのでカスタムイベントの使用手順としては以下の様になります。
①カスタムイベントを作成する
②そのカスタムイベント名の呼び出しノードを使用する
https://scrapbox.io/files/65b9d8cfbf54bd002441d47f.jpg
🐈:カスタムイベントを作成して呼ぶと、そのタイミングでカスタムイベントの後続ノードが実行されるという事になります。
カスタムイベントは使わなくても良い?
今回カスタムイベントを使用しましたが、カスタムイベントはこの場合であれば使わなくてもノードは同じように再現する事ができます。
https://scrapbox.io/files/65b9d90ff647780023834af7.jpg
上のカスタムイベントを使用した場合も、下のカスタムイベントを使用しない場合も、どちらも「ゲーム開始時にテキストを表示する」という全く同じ意味のノードになります。なのでこの場合であれば、カスタムイベントは使っても使わなくてもどちらでも構いません。むしろこの「ゲーム開始時にテキストを表示する」という機能に限ってはカスタムイベントは使わない方がシンプルで良いでしょう。
以下の3点においてカスタムイベントを使用する必要が出てきます。
table:カスタムイベントを使用するケース
①カスタムイベントを一緒に使用しなければならないノードがある。
②カスタムイベントを使う事によって同じ処理を書かなくて済み,ノードがわかりやすくなる
③別のブループリントからカスタムイベントを呼んで実行する事ができる
①と②はここで簡単に紹介できるので、紹介していきます。③については後のページなどで解説できたらと思います。
①カスタムイベントをセットで使用するノードがある
例えば一定間隔の時間で処理を実行する「SetTimerbyEvent」というノードがあります。このSetTimerbyEventノードは、一定時間毎にEventピンに繋げたカスタムイベントを実行するノードです。
https://scrapbox.io/files/65b9d9b1ce57960024703686.jpg
例えば上画像のようにTimeに間隔時間(0.5秒)を決めて、Loopingにチェックを入れると繋げたカスタムイベントを0.5秒毎にゲーム中繰り返し実行します。上のノードをプレイするとこんな感じに0.5秒毎にHelloとテキスト表示されます↓
https://scrapbox.io/files/65b9d9d2037c6f0025ae1176.gif
こんな感じにノードによってはカスタムイベントを作成して一緒に使用する場合があるので、こういったケースではカスタムイベントは必ず使用する必要があります。
②カスタムイベントによってノードを再利用でき,理解しやすくなる
二つ目のケースですが、カスタムイベントで処理を切り離す事でノードを再利用する事ができます。ノードも理解しやすくなり、手間も減ります。
例えばよくあるゲームの例としてコインを実装する際にカスタムイベントを使用するケースがあります。コイン枚数の増減する機会はかなり多く、例えばコインを拾う,コインを払ってアイテムを買う,死んだらコインを失うなどそのたびに「コインを表示する」という同じ処理を書かなくてはいけません。そんな時に以下画像の様に「コイン枚数を増減させる処理」と「コインを表示する処理」をカスタムイベントを使用して分離した処理として作る事でシンプルに、かつ手間もかからず実装する事ができます。
https://scrapbox.io/files/65b9da144b58db002446d673.jpg
上画像ではMyCoinというInteger型の変数を用意して、Fキーでコイン枚数を+1し、Gキーでコイン枚数を-1しています。DisplayCoinCountというカスタムイベントを作成して、コインを表示する機能を別で作成しています。プレイするとこんな感じにコイン枚数が増減されてテキスト表示されます↓
https://scrapbox.io/files/65b9da2e27bcd70024751915.gif
短いノードなので恩恵を感じにくいですが、こういったノードが実際のゲーム開発だと凄く長くなってくるのでカスタムイベントを使用した方が良い状況が発生します。
🌟Step2:カスタムイベントを経由して変数を渡してみよう
カスタムイベントは変数も渡す事もできるので紹介しておきます。
最初に作成したノードの状態から続けていきます。
https://scrapbox.io/files/65b9dabd6c893c002626f844.jpg
PlayerNameというString型の変数を作成します。デフォルト値は「太郎」とします。
https://scrapbox.io/files/65bc69a58279f00023b01935.jpg
MyCustomEventを選択した状態で、詳細のインプットのプラスボタンをクリックします。すると受け渡すデータを設定できるのでString型のPlayerNameという入力データを作成します。
https://scrapbox.io/files/65bc69d964ee330024098924.jpg
GerでPlayerNameノードを追加してPlayerNameの入力ピンに接続します。カスタムイベント本体の方のPlayerNameからInStringに接続します。
https://scrapbox.io/files/65bc6a529353a30027736029.jpg
プレイすると以下のようにテキスト表示されます。
https://scrapbox.io/files/65bc6ac82e38b00024d77f15.jpg
ノード解説
https://scrapbox.io/files/65bc6aa388e788002921ed8b.jpg
変数はこのようにカスタムイベント経由で渡す事もできます。
カスタムイベントとは?まとめ
?カスタムイベントとはイベントを作成でき、好きなタイミングでそのイベントを呼べるものです。
カスタムイベントは特定のノードとセットで使用したりしますが、そういった場合を除き使用は必須ではりありません。しかしカスタムイベントを使用するとノードを再利用できたり、ノードが理解しやすくなったり、手間が減ったりメリットがあります。状況に応じてカスタムイベントは使用していきましょう。
🌟《実践演習》
自己紹介システム作成
目標:カスタムイベントを使用し、ゲーム開始時に『わたしの名前は〇〇です』と表示させるプログラムを作ってみましょう。
①カスタムイベントの名前は『Introduction』とします。また、『MyName』というString型の変数を作成し、デフォルトは『太郎』とします。
②Print StringとAppendノードを使用します。AppendのAには『わたしの名前は』というテキスト、Bには『MyNameの変数』、Cには『です。』というテキストを入力します。
③必ずカスタムイベントのインプットを経由してテキストを表示させるようにしましょう。
④また、太郎が表示されたら、次は『花子』、その次は『次郎』と連続でテキストを表示させるようにしましょう。、
↓解答
https://scrapbox.io/files/65bcec6339973f002c86e974.jpg