User Widgetの継承について

UserWidgetでの継承について質問させてください。

基底となるWidgetを作成し、それを継承して子Widgetを作成したのですが、親Widgetに配置したオブジェクトが子Widgetでは表示されませんでした。

具体的には、以下のように画面下部にボタン操作の案内を表示している親Widgetを作成しました

そして、親Widgetを継承して作成した子Widgetには、ボタン操作の案内が表示されませんでした。

子Widget側の変数内には親Widgeから継承したオブジェクト(Button1等)は表示されています。

しかし、子Widget側の処理でこの変数を使用したところ

ブループリントランタイム エラー:“プロパティ Button1 の読み取りを試行するためのアクセスはありません”。 ノード: Set Button グラフ: EventGraph 関数: Execute Ubergraph WBP Merry Go Round ブループリント: WBP_MerryGoRound

というエラーになってしまいました。

そもそも、Widgetの継承で画面に表示するオブジェクトを子に引き継ぐことができるものなのでしょうか?

なお、このような実装をしたかった理由は、ミニゲーム集を作成しており、各ゲームで表示するWidgetは別物なんですが、どのミニゲームもボタンは3つしか使わない為に親Widgetで一括実装したかったという理由となります。

もとのWidgetの要素に差し込む形で継承したい場合は、NamedSlotを使用してください
NamedSlotを使わずに要素を置こうとすると、ルート要素から差し替わる形になります

変数が空になるのは、ルート要素から差し替わり、Hierarchyから排除されたため、初期化されなくなったためです

このように継承して編集したいところにNamedSlotを配置しておけば

継承先にNamedSlotが表示されるので、そこに追加することで、Widget要素を足すことが可能になります

2 Likes

親WidgetにNamedSlotを配置したところ、子Widgetに反映されることを確認いたしました!!

NamedSlotの機能自体を知らずに苦戦していましたが、とても勉強になりました。
これで効率的にWidgetを作成することができます!

ありがとうございました!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.