1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

World Partition を使用する際、隣のセルのオブジェクトを参照していた場合の挙動について

Last updated at Posted at 2025-12-07

はじめに

World Partition を使用して気になった点がありましたので、少し検証してみました。

World Partition はグリッド状に空間を分割して、セル単位で配置物のロード、アンロードを行えるオープンワールド向けの機能です。(大雑把な理解)

そこで思いました。
異なるセルのアクターを参照していた場合、どのようにロードされるのだろう......と。

前提

UE5.7.1 を使用して検証を行いました。
WorldPartition の細かい概念などについては触れません。
公式ドキュメントをご参照ください。

本題

さっそく、検証用のレベルを用意します。

ファイル → 新規レベル → 基本
からシンプルなレベルを用意します。

image.png

レベルを保存して、別のレベルへ移動。
コンテンツブラウザから先ほどのレベルを右クリックして、

「パーティション化のストリーミングサポートを追加」を選択します。
image.png

ワールドセッティングタブを開いて、「ストリーミングを有効化」のチェックを入れておきます。
これで、WorldPartition に対応したレベルのセットアップが完了です。

そして、ワールドセッティングのランタイム設定に、Main Partition という項目があると思うので、
セルのサイズ : 1600
ロードする範囲 : 1000
としておきます。(テストしやすいように小さめにしています)

image.png

そして、画像のようにアクターを配置しました。
Main Partition の
「Debug - Show Grid Preview」にチェックを入れておくと、
グリッドの境界が分かりやすくなります。
image.png

まずこれでテストすると、
それぞれのアクターが個別にロード、アンロードが行われることが確認できます。
image.png

それでは、Cube の方に Sphere をハード参照させます。
画像のように BP に変数を用意して公開しました。(後でソフト参照のテストも出来るように 2つ変数を用意しています)
image.png

結果はこのようになりました。
image.png

2つのアクターが纏められ一つの大きなアクターとして扱われているように見えました。
2025-12-07162430-ezgif.com-optimize.gif

次に、ソフト参照について検証してみます。
Tick で参照先アクターが存在するかをチェックして PrintString しています。
2025-12-07164636-ezgif.com-optimize.gif

ソフト参照であれば、個別にロード、アンロードを管理できますね。
ただ、アクターが非アクティブになっているかどうかを取得する方法が分かりませんでした。
GC によって回収されるまで、インスタンスは有効な状態なので、
IsValid だけだとすり抜けてきます。

OnDestroy などを監視すればいい?

まとめ

少し触った事がある人にとっては当たり前のことかもしれませんが、
WorldPartition で管理している Actor からのハード参照、ソフト参照の挙動について検証してみました。

ハード参照しておけば必ず同時にロードされる事が保証されているので、セルの境界をまたいで参照しても安心ですね。

逆に言うと、不要なアクターがロードされてしまうケースも考えられるので、そういう場合はソフト参照なども駆使して適切に管理しましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?