GameProgrammar's Night

ゲームプログラム系の覚え書き

UnrealEngine4で2Dゲームを作ろう! その16 CreateEventノード!

 イベントディスパッチャーってやつがあります。

 イベントディスパッチャーにイベントをBindするノードの仕様で、イベントを必ず同じEventGraph上に作らなければならず、イベントディスパッチャーを使い始めるとなかなかスパゲティなコードになってしまい困っていました。

f:id:katze_7514:20160119183938j:plain

 関数をEvent化してbindできるようになってくれればなぁ、と思い調べた所、できるようになっていました。それがCreateEventノードです。
 
f:id:katze_7514:20160119184849j:plain

 リリースノートを見るとUE4.9で「使いやすくしました」とあるので、前々からあったようです。

New:CreateEvent nodes are now more user friendly - they will use the current blueprint as the default context and no longer suggest that the user select an asset for context.

使い方

 例えば、以下のようなイベントディスパチャーがあったとします。
f:id:katze_7514:20160119185501j:plain
 integer1つと、Stringを1つ引数に取るイベントとします。

bindするイベントとまったく同じ引数を持った関数を定義する

 ブループリントクラス内で関数を定義します。引数は、イベントディスパッチャーのものと同じにします。
 f:id:katze_7514:20160119185820j:plain

 引数の名前は、わかりやすく同じにしていますが同じである必要はありません。引数の型・数・順番があっていればOKです。

bindノードをおいて、CreateEventとつなぐ

f:id:katze_7514:20160119190201j:plain
 bindノードにつなぐと、CreateEventノードの下部に「関数を選択」と出ます。

関数を選択から先ほど定義した「StateEnd」を選ぶ

f:id:katze_7514:20160119190335j:plain

 これで、bind完了です。
 関数リストにbindしようとした関数が出て来ない場合は、引数が間違っているということになりますので見直して見ましょう。