入れ子構造のウィジェットを作りたいのですが、いくつかの処理が実装できず困っています

下記機能を持ったウィジェットを作成しようとしているのですが、下記に記載しています【詰まっていること】の部分の実装方法で難儀しております。どなたか、知恵をお借りできますと幸いです。

公式ドキュメントなども見ていますが、なかなか良いアプローチが見つからず・・

▽ウィジェット名
・親ウィジェットは【Base01】
・子ウィジェットは【Child】

▽実現したいこと
・親ウィジェットと子ウィジェットが存在している
・親ウィジェットは、複数の子ウィジェットを画面に配置する
・子ウィジェットに搭載されたボタンで、親ウィジェットの処理を呼べる
・親ウィジェットに表示された、子ウィジェットのボタンを押した際、押したボタンによって異なる表示を走らせたい

▽今できていること
・親ウィジェットに複数の子ウィジェットを表示させる
・親ウィジェットに表示された子ウィジェットに対し、ウィジェットごとに異なる画像とテキストを表示する

ゲーム画面
親ウィジェット_ゲーム画面

親ウィジェット処理

▽詰まっていること
・子→親でイベントを通知する方法が分からない

・親ウィジェットに表示された子ウィジェットのボタンに対し、各ボタンごとに異なる処理を走らせる方法が分からない

子1個につき1個の処理だと思うので、親側に子の数だけCustomEventが存在する感じですかね
子から親にイベント通知するときは、イベントディスパッチャーBlueprintインターフェースが使えますよ

1 Like

アドバイスいただきありがとうございます・・!
調べてみたのですが、インターフェースの方が良さそうだという話を見かけたので、
インターフェースでどうにか実装できないか、試行錯誤してみますm(_ _)m

1 Like

kururuさんの発言にもありますが
個人的には子が対応した結果を「上位にある誰か」に伝える目的であればイベントディスパッチャーが適任かなと思います。
(インターフェースでももちろん実装は可能です)

こちらが子の処理

こちらが親の処理

イベントディスパッチャーにも引数を設定することができるためインターフェースと遜色はありません

イベントディスパッチャーとインターフェースの違いですが

イベントディスパッチャーは実行時にバインドした全員に向かって大声で呼びかけるイメージで
インターフェースは実体を知っている特定の誰かに、やれたらやってくれとお願いするイメージです。

良し悪しありますがイベントディスパッチャーをお勧めします。

1 Like