目次
はじめに
ゲームではときにシーケンサーからではなく、既にAddToViewportされたUIに対してシーケンサーからイベントを送信したいケースがあります。
そのなときに使える方法を紹介します。
個人の備忘録としてまとめています。誤った情報がある場合があります。
もっと良い方法などもあるかもしれません!
コメントにてご指摘のほどお願いいたします。
UE5.6で解説します。
解説
⓪方針
動的バインディングも模索しましたがActorしか受け付けないのでシンプルにDirectorBPからPlayerController経由でイベントを発火させる手法で行きました。
UIはLocalなPlayerControllerに所有されるのが基本挙動なのでそのような形で対応します。

①UIにイベントの追加
まず、WidgetUIに対してシーケンサーからイベントを受け取る窓口を作成します。
今回はW_GoalというWidgetBPにEventNotifyFromControllerというイベントを追加しました。

ここでは識別のためにGameplayTag型のNotifyTagを引数に持っています。

Stringでもintでも良いですが、GameplayTagがサイコーという内容はここで紹介しているので読んでみて下さい。
②PlayerControllerにイベントの追加
今回はPlayControllerがWidgetの生成&破棄を一任させているので、シーケンサーとの連携の直接の窓口にはここを利用します。

ここにW_GoalへのイベントをブリッジするSequenceEventToGoalUIというイベントを作りました。

Nullチェックは以下の方法です。

③シーケンサーとの連携 - イベントブリッジ -
イベントトラック->トリガーを選択します。

とりあえず1つキーを打ちます。

追加されたキーを右クリックし新規エンドポイントを作成を押します。

シーケンサーのDirectorBPが開くのでSequenceEventToPlayerControllerへリネームしました。
この時にペイロードとしてNotifyTagをCustomEvent側に追加&接続します。

これで先ほどのキーからプロパティを見るとWidgetに対して渡すペイロードが追加され無事に登録できるようになりました。
あとはこのキーを複製するなりして、タイミングとTagを登録すればひとまず完了です。


あとはシーケンサーを再生してWidgetにイベントが来ていることを確認出来たら完成です。

最後に
今回はイベントで渡しましたがペイロードをfloatやVector,カラーなどにしてシーケンスから値を渡すことで可能性が広がります。素晴らしい演出と実装を組み合わせて満足いくゲーム制作にいかせたらと思います。
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやX(Twitter)のフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。