Widgetのボタン押下をLevelBlueprint上で判断する方法。

掲題の件に関して質問があります。

最終的にやりたい事はWidgetのボタン押下時にLevelBlueprint上でLevel用の処理を行う事ですが、
下記のようにイベントディスパッチャーの方法で試してみましたが、
Levelのインスタンスが取得できず、うまくいっておりません。

もし何かしら良い方法があればご教示いただけないでしょうか。

①WidgetのButtonのonClick呼び出しを作成する。

②Level上に「UIButtonClick」イベントディスパッチャーを作成する。

③Level上のBeginPlayから「UIButtonClick」のバインドを作成し、Level上のイベント処理とバインドさせる。

④WidgetのOnclick処理で「UIButtonClick」の処理を呼び出す。

しかしながら、UIButtonClickを呼び出す際にLevelBlueprintのインスタンスを取得する手段がない為、
呼び出すことが出来ない状態となっている。

⑤Widgetからレベルのインスタンスを設定する為に下記方法も試してみましたがうまくいきませんでした。

  • GameInstanceにLevel型の変数を作成しようとしたが作成できない。
  • Actor型の変数を作成してレベルのインスタンスを設定できたが、今度はActorクラスからLevelクラスにキャストする方法がない。

上記イベントディスパッチに関する質問かもしれませんが、
イベントディスパッチ以外にもWidgetのボタン押下時にLevelに通知するおすすめの方法などあればご教示いただけないでしょうか。

初歩的な質問かもしれませんが、何卒よろしくお願いいたします。

Widget側にEventDispatcherを追加し、LevelBlueprint側のEventをBindするのが良いでしょう。
EventDispatcherは「EventDispatcherを保持する側」からCallするのが基本的な使い方です。

日本語環境では「呼び出し」とありますが、通常の関数のように通知先を指定してCallするのではなく、EventDispatcherに対してBindされているイベントを間接的にCallするものです。

http://unrealengine.hatenablog.com/entry/2014/10/20/223445

早速のご回答ありがとうございます。

EventDispatcherは「EventDispatcherを保持する側」からCallするのが基本的な使い方です。
ご教示いただいた通り、WidgetにEventDispatcherの作成を行い、
LevelBlueprint側から「Get All Widgets of Class」から取得したインスタンスを
ターゲットとしてバインド処理を行うことで、
無事目的の処理を作成することが出来ました。

本当にありがとうございます。