Unity は、シーンをロードまたはアンロードする方法に応じて、ライトプローブのデータを異なる方法で更新します。
Unity は LightProbes C# オブジェクトを使用して、現在ロードされているすべてのシーンのライトプローブデータを保存します。LightProbes
オブジェクトには、4 面体テッセレーションと呼ばれる内部データ 構造体が含まれています。Unity は計算に 4 面体テッセレーションを使用して、ライトプローブがゲームオブジェクトをどのように照らすかを決定します。
シーンをロードまたはアンロードすると、Unity は自動的に LightProbes
オブジェクトを更新し、現在ロードされているすべてのシーンのすべてのライトプローブの位置と係数を加えます。ただし、Unity が 4 面体テッセレーションを更新するかどうかは、シーンのロード方法とアンロード方法によって異なります。
LoadSceneMode.Single を使用してシーンをロードすると、Unity はロードプロセスの一部として 4 面体テッセレーションを自動的に更新します。 LoadSceneMode.Additive を使用してシーンをロードする場合、または UnloadSceneAsync を使用してシーンをアンロードする場合、Unity は 4 面体テッセレーションを更新しません。
If Unity performs calculations using an out-of-date tetrahedral tessellation, the results do not take into account any newly loaded or unloaded Light Probes. This means that Light Probes might not light GameObjects as expected, and calls to LightmapSettings.lightProbes.CalculateInterpolatedLightAndOcclusionProbes() or LightmapSettings.lightProbes.GetInterpolatedProbe() might return unexpected results.
To force Unity to update the tetrahedral tessellation, you can call LightmapSettings.lightProbes.Tetrahedralize() or LightmapSettings.lightProbes.TetrahedralizeAsync(). These functions cause Unity to update the tetrahedral tessellation with data from all Light Probes for all currently loaded Scenes.
4 面体テッセレーションの更新は CPU に負荷がかかり、ライトプローブの数に応じて CPU への影響が増加します。複数のシーンをロード/アンロードしているときに、4 面体テッセレーションの更新によってパフォーマンスに影響が出る場合は、一定量のコンテンツをロード/アンロードするまで、または、CPU がアプリケーションのパフォーマンスに影響するとは考えられなくなる時点まで、更新を遅らせるほうが良い場合があります。