UE4.22を使っているのですが、
Blueprintプロジェクトで、「座標を持たないオブジェクト」が必要な場合、
UObject(Object)クラスを使う事を思いつくのですが、以下の事ができません。
・Objectクラス配列をForEachで回して、それぞれスポーン
・タイムラインなどの処理
・スポーン
これらの制約がないUserWidgetをCanvasPanelを削除し「座標を持たないオブジェクト」として扱う事を考えているのですが、
適切な使い方なのでしょうか?
また、UserWidgetの「画面」と、「ロジック」を切り離すために、「ロジック」だけを含むUserWidgetを作成しているのですが、これもまた適切な使い方なのでしょうか?
UObjectクラスのインスタンスを作る場合は ConstructObjectFromClass で作成します
Tilelineに関しては、Timelineは暗黙的にTimelineComponentを追加することになるため、Componentを扱う機能のないUObjectでは使用できません
Spawnに関しても同様で、UObjectはWorldに対する依存関係を持っていない(WorldContextではない)ため、SpawnActorを扱うことができません
これらの制約がないUserWidgetをCanvasPanelを削除し「座標を持たないオブジェクト」として扱う事を考えているのですが、適切な使い方なのでしょうか?
あくまでも個人的な見解ですが、あまり好ましい使い方ではないと考えます
描画部分がなくとも、Widgetである以上、描画すべきObjectとして扱われ、余計なリソースを消費すると予測されます
また、UserWidgetの「画面」と、「ロジック」を切り離すために、「ロジック」だけを含むUserWidgetを作成しているのですが、これもまた適切な使い方なのでしょうか?
ActorやPlayer、ゲーム空間に対するプレゼンテーション層がWidget(UI)である、という視点で見ると、UserWidgetである時点で「画面」と「ロジック」が切り離されています
再利用性などを考えるとUserWidget内で更に分割するのはアリなのかもしれませんが、個人的には設計が冗長すぎるように思います
・Objectクラス配列をForEachで回して、それぞれスポーン
ではなく、
・Objectクラス配列をForEachで回して、それぞれインスタンスを作成
でした。すみません。
ありがとうございます。
「・Objectクラス配列をForEachで回して、それぞれインスタンスを作成」は
自作のObjectクラスを作成して、その派生クラスを作成することで解決できました。(多様性を持たせたかった)