Unity ではビルド時とランタイム時に静的バッチ処理を行うことができます。原則として、アプリケーションをビルドする前にゲームオブジェクトがシーンに存在する場合は、エディターを使ってビルド時にゲームオブジェクトをバッチ処理します。ランタイムにゲームオブジェクトとそのメッシュを作成する場合は、ランタイム API を使用します。
ランタイム API を使用すると、静的バッチのルートのトランスフォームプロパティを変更することができます。つまり、静的バッチを構成する結合したメッシュ全体を移動、回転、または拡大縮小することができます。個々のメッシュのトランスフォームプロパティを変更することはできません。
ゲームオブジェクトのセットに対して静的バッチ処理を使用するには、ゲームオブジェクトが静的バッチ処理の対象である必要があります。共通のバッチ処理の使用情報に記載されている基準に加え、以下を確認してください。
DisableBatching タグが true に設定されているシェーダーを持つマテリアルを使用しない。ノート: ランタイムの静的バッチ処理を使用するには、メッシュの読み取り/書き込みも有効に設定する必要があります。
静的バッチ処理のパフォーマンスへの影響については、パフォーマンスへの影響を参照してください。
エディターでビルド時に静的バッチ処理を有効にすることができます。
ビルド時に静的バッチ処理を行う場には、以下を行います。
Unity は、共通の使用情報に記載されている条件を満たす場合、自動的に静的メッシュを同じドローコールでバッチ処理します。
ノート: ビルド時に静的バッチ処理を行うと、ランタイムに CPU リソースを一切使用することなく、静的バッチ用のメッシュデータが生成されます。
ランタイムに静的メッシュをバッチ処理するために、Unity では StaticBatchingUtility クラスが提供されています。静的な StaticBatchingUtility.Combine メソッドは、渡されたゲームオブジェクトを結合して、静的バッチ処理の準備をします。これは特に、ランタイムにプロシージャルに生成されたメッシュに有効です。
ビルド時の静的バッチ処理とは異なり、ランタイムのバッチ処理では、Static Batching Player 設定を有効にする必要はありません。この API の使用方法については、StaticBatchingUtility を参照してください。