mki21751
(mki21751)
1
環境
・Windows 10
・Unreal Engine5.1
・Visual Studio 2019
本文
DetaTableから読み込んだ座標にActorを配置して、それぞれの上に異なる名前の入った3D Widgetを表示したいのですが、すべて同じになってしまいます。
作成手順
・モデルを配置する座標・3D Widgetに表示したい名前が入ったcsvを作成。
・WidgetはコンポーネントにしてActorと同じ空間で作成。
作成したBP
BP_test4の内容
以上、情報の不備不足有りましたらご指摘いただけますと幸いです。
どうぞよろしくお願いいたします。
LunaNelis
(ネリスさんMain)
2
BP_Test4の処理の画像が解像度が低く細かい数値まで見えませんが
そもそもForLoopの後にGetDataTableRowNamesからForeachが見えるため
データテーブルの数xループ数同じ場所に同じBP_W4を生成していると思われます。
いくつか根本的な部分での対処方法になりますが、こういった構造にしてみてはいかがでしょうか?
処理を拝見したところ、BP_W4とWB_Test4の位置は同じXY座標を持つようなので
BP_W4にWB_Test4をComponentとして持たせ
BP_test4で行うSpawnActor時に番号、あるいはデータテーブルのRowNameを初期値として渡してやりBP_W4がその初期値をみて文字や座標を更新する。というものです
何らかの意図があってそういった処理をしていたり、検討違いであれば申し訳ないですが
こういった対処もあるということで。
1 Like
mki21751
(mki21751)
3
早速のご回答ありがとうございます。
いろいろ調べたのですが、『BP_test4で行うSpawnActor時に番号、あるいはデータテーブルのRowNameを初期値として渡してやりBP_W4がその初期値をみて文字や座標を更新する』という方法がわかりませんでした。お手数ですが、具体的な方法を教えていただけますでしょうか。(初心者です・・)
また、『BP_W4にWB_Test4をComponentとして持たせ』、BP_W4をビューに配置してPlayしたところ、無限ループが発生しました。
BP_test4の内容を再掲載します。(前回、画像が小さくて申し訳ありません)
ご教授のほどをお願い申し上げます。
LunaNelis
(ネリスさんMain)
4
これは一つの回答方法であり、もっといい方法もあると思いますが
BP_Test4の中身はこんな感じ
データテーブルの列の数だけループしてBP_W4をSpawnします
Spawnする際に列の番号を渡しています
BPW4ではRowNoという変数を作成し「インスタンス編集可能」と「スポーン時に公開」にチェックを入れておきます
また、WidgetComponentを付けて頭上に文字が出せるようにします

中の処理は以下の通り
BP_test4で渡された列番号からデータテーブルのデータを取得し、自身の頭の上の文字と座標を更新します
あくまで一例なので参考程度ですが。