お世話になっております。
UE5.8環境にて、ULevelStreamingDynamic::LoadLevelInstance() によりレベルインスタンスをロードした際、内部で FlushAsyncLoading() が呼び出され、同期ロードによる処理ブロックが発生しています。
<br/>
過去にUE5.7のときに問い合わせた際、IsSpatiallyLoaded == false の Actor が関係していおり、該当するものをデータレイヤーに逃がすかフラグをtrueにするかで回避可能と回答をいただきました。
<br/>
今回UE5.8への移行に伴い、原因となるActorの情報をログ出力をするようなエンジン改造の対応を進めたいと考えております。
そこで、FlushAsyncLoading() (最終的には FAsyncLoadingThread2::FlushLoading(TConstArrayView<int32> RequestIDs)) の実行に至る原因となっている IsSpatiallyLoaded == false の Actor を特定したいのですが、UE5.8ではエンジンソースのどの箇所にログを追加するのが適切でしょうか。
調査したい内容は以下の通りです。
FlushAsyncLoading()が発生する際の呼び出し経路- Always Loaded Cell として扱われているセルの情報
- そのセルに含まれる
IsSpatiallyLoaded == falseの Actor 一覧 - 最終的に同期ロードを引き起こしている Actor 名やクラス名
<br/>
<br/>
※UE5.7時点では World Partition のセル生成処理における以下の判定が関連している認識です。
<br/>
<br/>
// UWorldPartitionRuntimeHashSet::GenerateStreaming内部
const bool bIsCellAlwaysLoaded =
!CellDescInstance.bIsSpatiallyLoaded &&
!CellDescInstance.DataLayerInstances.Num() &&
!CellDescInstance.ContentBundleID.IsValid();
[Attachment Removed]