Version: Unity 6.0 (6000.0)
言語 : 日本語
ドローコールのバッチ処理の有効化
メッシュの手動結合

静的バッチ処理の有効化

Unity ではビルド時とランタイム時に静的バッチ処理を行うことができます。原則として、アプリケーションをビルドする前にゲームオブジェクトがシーンに存在する場合は、エディターを使ってビルド時にゲームオブジェクトをバッチ処理します。ランタイムにゲームオブジェクトとそのメッシュを作成する場合は、ランタイム API を使用します。

ランタイム API を使用すると、静的バッチのルートのトランスフォームプロパティを変更することができます。つまり、静的バッチを構成する結合したメッシュ全体を移動、回転、または拡大縮小することができます。個々のメッシュのトランスフォームプロパティを変更することはできません。

ゲームオブジェクトのセットに対して静的バッチ処理を使用するには、ゲームオブジェクトが静的バッチ処理の対象である必要があります。共通のバッチ処理の使用情報に記載されている基準に加え、以下を確認してください。

  • ゲームオブジェクトがアクティブである。
  • ゲームオブジェクトには Mesh Filter コンポーネントがあり、そのコンポーネントは有効である。
  • Mesh Filter コンポーネントに Mesh への参照がある。
  • メッシュの頂点数が 0 より大きい。
  • そのメッシュがまだ他のメッシュと結合されていない。
  • ゲームオブジェクトには Mesh Renderer コンポーネントがあり、そのコンポーネントは有効である。
  • Mesh Renderer コンポーネントは、DisableBatching タグが true に設定されているシェーダーを持つマテリアルを使用しない。
  • まとめてバッチ処理するメッシュが同じ頂点属性を使用している。例えば、Unity は、頂点位置、頂点法線、1 つの UV を互いに使用するメッシュ同士はバッチ処理できますが、頂点位置、頂点法線、UV0、UV1、頂点接線を使用するメッシュとは一括処理できません。

ノート: ランタイムの静的バッチ処理を使用するには、メッシュの読み取り/書き込みも有効に設定する必要があります。

静的バッチ処理のパフォーマンスへの影響については、パフォーマンスへの影響を参照してください。

ビルド時の静的バッチ処理

エディターでビルド時に静的バッチ処理を有効にすることができます。

ビルド時に静的バッチ処理を行う場には、以下を行います。

  1. Edit > Project Settings > Player に移動します。
  2. Other SettingsStatic Batching を有効にします。
  3. Scene ビューまたは Hierarchy で、バッチ処理するゲームオブジェクトを選択し、Inspector で表示します。
    ヒント: 複数のゲームオブジェクトを同時に選択して、そのすべてに対して静的バッチ処理を有効にできます。
  4. ゲームオブジェクトの Static Editor Flags で、Batching Static を有効にします。

Unity は、共通の使用情報に記載されている条件を満たす場合、自動的に静的メッシュを同じドローコールでバッチ処理します。

ゲームオブジェクトの Inspector にある静的エディターフラグのチェックボックス
ゲームオブジェクトの Inspector にある静的エディターフラグのチェックボックス

ノート: ビルド時に静的バッチ処理を行うと、ランタイムに CPU リソースを一切使用することなく、静的バッチ用のメッシュデータが生成されます。

ランタイムの静的バッチ処理

ランタイムに静的メッシュをバッチ処理するために、Unity では StaticBatchingUtility クラスが提供されています。静的な StaticBatchingUtility.Combine メソッドは、渡されたゲームオブジェクトを結合して、静的バッチ処理の準備をします。これは特に、ランタイムにプロシージャルに生成されたメッシュに有効です。

ビルド時の静的バッチ処理とは異なり、ランタイムのバッチ処理では、Static Batching Player 設定を有効にする必要はありません。この API の使用方法については、StaticBatchingUtility を参照してください。

ドローコールのバッチ処理の有効化
メッシュの手動結合