Version: 2022.1
言語: 日本語
動的ゲームオブジェクトによるオクルージョンカリング
オクルージョンエリア

オクルージョンカリングとシーンのロード

ランタイムに、開いているシーンの数にかかわらず、Unity は一度に 1 つのオクルージョンカリングデータアセットのみをロードします。したがって、一度に 1 つのシーンをロードするか、複数のシーンをロードするかによって、オクルージョンカリングデータを異なる方法で準備する必要があります。

一度に 1 つのシーンをロード

LoadSceneMode.Single を使って一度に 1 つのシーンをロードする場合は、以下のように、各シーンのオクルージョンカリングデータを個別にベイクする必要があります。

  1. Unity エディターで、オクルージョンカリングデータをベイクする 1 つのシーンを開きます。
  2. シーンのデータをベイクします。Unity はデータを生成し、Assets/[Scene name]/OcclusionCullingData.asset として保存します。Unity はこのアセットへの参照を開いているシーンに加えます。
  3. シーンを保存します。
  4. 各シーンで手順 1、2、3 を繰り返します。

ランタイムに、以下のようにシーンをロードします。

  1. プロジェクトのデフォルトシーンとして、または LoadSceneMode.Single を使用してシーンをロードします。Unity は、アクティブなシーンがあると、(オクルージョンデータアセットがある場合は) そのオクルージョンデータアセットと共にシーンをアンロードします。次に、Unity はオクルージョンデータアセットとともに他のシーンをロードします。

一度に複数のシーンをロード

LoadSceneMode.Additive を使って一度に複数のシーンをロードする場合は、以下のように、複数のシーンのオクルージョンカリングデータをベイクする必要があります。

  1. Unity エディターで、 複数シーンのグループ中でランタイムに最初にロードするシーンを開きます。これがアクティブなシーンになります。
  2. 次に、グループ内の他のシーン (複数) を開くと、それらすべてが同時に Unity エディターで開きます。
  3. すべてのシーンのデータをベイクします。Unity は開いているすべてのシーンのデータを生成し、Assets/[active Scene name]/OcclusionCullingData.asset として保存します。Unity は開いているすべてのシーンにこのアセットへの参照を加えます。
  4. シーンを保存します。

ランタイムに、以下のようにシーンをロードします。

  1. プロジェクトのデフォルトシーンとして、または LoadSceneMode.Single を使用してグループの最初のシーンをロードします。Unity は、アクティブなシーンがあると、(オクルージョンデータアセットがある場合は) そのオクルージョンデータアセットと共にシーンをアンロードします。次に、Unity はオクルージョンデータアセットとともに他のシーンをロードします。
  2. 必要に応じて、LoadSceneMode.Additive を使って他のシーンをロードします。後からロードされたシーンのオクルージョンデータがアクティブなシーンのオクルージョンデータと同じであると Unity が検出した場合は、オクルージョンカリングは意図したとおりに機能します。

共有のオクルージョン データアセットのサイズは大きくなります。大きなオクルージョンデータアセットを使用しても、ランタイムの CPU への影響はありません。

Unity エディターでの複数シーンの使用については、複数シーンの編集 を参照してください。

動的ゲームオブジェクトによるオクルージョンカリング
オクルージョンエリア