配列で所持している子widgetを親のwidgetでループで回して全て表示したいです

はじめまして!
この問題を解決してくれる神様を私は探しています。

私はダッシュボードのUIを作成したいと思っています。
3×4の計12個のグラフが作成されDrag&Dropが効くようにクラスwidgetを一つ作成してそこに一つづつloopで回してデータを渡し、テクスチャを貼り付けていました。
ここまでは、自分で努力して作成することができました。
ですが、今後この一つ一つのグラフをテクスチャではなくwidgetとして貼り付けたかったため変数の型をwidgetとして定義し、12個分の子widgetも作成してdefaultの値として定義しました。
image

今回教えてほしいものはこの後の作業のことでして、for each loopで配列から要素を一つづつ取り出し、その中にあるgraphという子widgetをgridに貼り付けたいのですが、create widgetのノードピンに接続できません。
この場合どのようにすればよいのでしょうか?
よろしくお願いします!!

CreateWidgetなどインスタンス生成系のノードにつなぐのは、「オブジェクト参照」ではなく「クラス参照」です
接続したいノードのピンの色をよく見比べてみてください

image

@kameji1025
Break ST_GraphのGraphを左クリックで引っ張ってGetClassを呼び、Construct NONEのClassへとつなげることができます
※直接つなぐこともできますが、その場合は元の親から外れて新しい親へと接続されることになります

GetClassが使えるという事は既にオブジェクトを生成しているわけで、その場合はContructを無視して直接AddChildToに繋げば良いのではないでしょうか。

私はT_Sumisakiさんの仰るようにST_Graph構造体を変更してオブジェクト参照からクラス参照に変更するのがキレイなように思います。

@T_Sumisaki @kiruru002 @DROSS_JP
御三方コメントの方ありがとうございます。
また、質問した側でありながらご返信遅れてしまい申し訳ございません。
もう少しご協力していただければ幸いです。


上図のように、生成させる前とのご指摘通りUser Widgetとして定義し

上の図のようにcomponentで管理しているためGraphの初期値も変更しております。

ピンも接続できたのを確認できました。ですがいざ実行させてみると

widgetの画面が出力されません。
この場合、どのようなことが要因と考えられるでしょうか?引き続きご教授お願いいたします。

@kameji1025
その状態ならウィジェットリフレクターを使えるのではないでしょうか
[Tools] > [Debug] > [Widget Reflector]

Unreal Engine でスレート ウィジェット リフレクタを使用する | Unreal Engine 5.3 ドキュメント

[UE4] Widget Reflectorを使ってリソースや設定を調べよう #UE4 - Qiita

表示がないということでしたら、階層構造がどうなっているか(子が割り当てられているか)、VisibilityやLayout設定等がどうなっているかという点が怪しい気がします

もとの仕組みではExposeOnSpawn指定した変数(Graph)からTextureを取得していたと思われます
今の仕組みではその部分が無いようですね

子Widgetとして作り、CreateWidgetするのであれば、Textureは子Widget内で設定すればよいのではないでしょうか?
子Widgetを作るのであれば、外からTextureを渡す必要はないと思います

なるほど。
使用したことないので少しやってみます!

そうです!
以前まではテクスチャを渡していたのですが現在はwidgetに置き換えたいと思っております。
上記の写真は今後消すとして、今は子widgetにテクスチャを貼り付けています!

@T_Sumisaki @kiruru002 @DROSS_JP
御三方!今回の疑問は
①ダッシュボードを作成したい
②12個のグラフが必要かつドラッグ&ドロップにてグラフを移動できるようにしたい
③ドラッグ&ドロップを効かせる為、←この機能を搭載した空のwidget(W_Chart_Tile)をループ毎に生成し渡されたテクスチャをはめ込み、12個のグラフを作成した。
④テクスチャのバージョンでDrag&Dropが動き12個のグラフも生成されたため今度はテクスチャではなく実際にwidgetを渡したい
→現在に至る

ということなのですがそれ以前の事について、ドラッグ&ドロップの保持の仕方に疑問が出てしまい、

現在質問していることは③を
⑤ グラフ一つ一つのwidgetにドラッグ&ドロップを記述し、それを配列として12個所持。その後ループにて一つ一つ生成する。
として機能させていこうとしたのですが、上記の ⑤ について以下の⑥とどちらが適切でしょうか?

⑥ ドラッグ&ドロップの機能は③の方法と同じように、ドラッグ&ドロップの機能を搭載した空のwidget(W_Chart_Tile)をループ毎に生成する。そこに!今回表示したいwidgetを渡し、作成する。
(この場合、widgetはW_Chart_Tile内で表示させるようにする)

よろしくお願いします。

@kiruru002


このような感じになってます。
青のハイライトになっている部分がindex0に表示されている子のwigetです。
これを見た感じwidget自体は表示されているという理解であってますでしょうか?

@kameji1025
はい
画像で表示されている白い四角が一番奥のImageですかね

@kameji1025
5だと一つ一つに記述するのが手間なので6の方が楽できるでしょうか
ただドラッグ&ドロップの時だけ何か特別な表示にしたいなら、処理を12個分書いてもいいですね
それはどちらでも大きな差はないと思いますよ

Widgetは一度親子付けされたらその親(Drag&Dropの場合はたいていViewport)が参照を保持し続けますから、毎フレーム何かを生成する意味が薄いです
Tickを監視する必要があるなら、代わりにOnDragEnter, OnDragLeave, OnDragOverが使えます

@kiruru002
なるほど!
今後やるとしたら、以下の画像のようにグラフの大きさ(widget)をカスタムできるようにしたいかな、というぐらいです。

でも今はwidgetを表示しないといけないので、、、
今回widgetが表示されていないという疑問は無くなった?とすると他に考えられる要因はありますでしょうか?

@kameji1025 要因とは何の話ですか

@kiruru002
あ、すいません、、
実は現在、実際的なテクスチャを一つ一つのグラフ(子widget)に張り付けているのです!
ですが、以下の画像のように未だテクスチャが表示されていません、、

このテクスチャが表示されない要因として、子widget自体が表示されていないのか、それとも他の要因があるのか、、、
何か考えられる要因はありますでしょうか??
よろしくお願いします!

直近の流れが追えていないのでこの投稿のみに限定した返答となりますが
この状態は子Widget自体は表示されているが画像が上手く渡せていないという状態になると思われます。

画像が渡せていない要因は生成から子Widgetに追加して、画像渡してみたいな一連の流れを見ないと何ともという感じですね。固定値ならまた話は変わりますが。

@DROSS_JP
それが今回テクスチャは固定値としてimageに設定しているのです。
先ほど、テクスチャだけが表示されないのかと思い、ボタン、テキストボックス等置いてみたのですがやはり表示されず、真っ白いままです、、、

少し自分の考えの整理もかねてこれから、丁寧に設計書的なものを作成しようと思います!
もう少しお付き合いお願いします。

今回私はDashboardを作成しています。上記の画像にあるオブジェクトが主要なものになります。
質問内容としてはGraphというwidgetに存在する、テクスチャまたは、ボタン、テキスト(固定値で載せている)等が表示されないという問題です。

流れといたしまして、


①上記の画像のように、Comp_DragDropで型がUser Widget クラス参照のGraphを12個の配列として所持しております。


②次にW_DashboardでGraphにある一つ一つのGraphをeach roopで取り出し、W_Chart_TileをCreateさせGraphを渡します。(×12回やってます!)

W_Chart_Tileは以下の図のようにDrag&Drop等の処理を記載しているだけのtileとなっており、言い換えれば透明なtileとなっております。
また、この上にGraph Widgetがのるような感じです。

その後、Dashboardではgridにはめる作業などもしております。



③そして、W_Chart_Tileでは②で渡されたGraph Widgetをuniform grid panelにはめ込んでいます。
(以下の図のように、イベントグラフからset tile というカスタムイベントが走るようにして上記の図の処理が走るというようになっております。)

このようにして、実際的なグラフWidgetが表示させることを期待していました、、、

@DROSS_JP @kiruru002 引き続き助力のほうよろしくお願いします。

可能であれば、W_Chart1_Rev1のOverlay, SizeBox, Border, Overlay(2), Imageそれぞれの設定も見せてほしいです
真っ白な表示は、それの表示サイズの設定に起因している可能性があります