Version: Unity 6.0 (6000.0)
言語 : 日本語
デフォルトのシェーダーキーワード
シェーダーのメモリ使用量の制御

アセットバンドルによるシェーダー複製のトラブルシューティング

アセットバンドル を使用する場合、2 つ以上のオブジェクトで 1 つのシェーダーを参照すると、複製されたシェーダーがコンパイルされる場合があります。 例:

  • アセットバンドルのマテリアルとビルドされたシーンのマテリアルが同じシェーダーを参照する場合。
  • 複数のアセットバンドルに、アセットバンドルの外部の同じシェーダーを参照するマテリアルが含まれる場合。

これにより、シェーダーが使用するメモリとストレージスペースが増加し、ドローコールのバッチ処理 が中断される場合があります。

これを回避するには、以下のアプローチを使用します。

  • 最初にすべてのシェーダーを含むアセットバンドルをロードしてから、シェーダーを参照するアセットバンドルアセットをロードしてインスタンス化します。詳細は、アセットバンドルの依存性 を参照してください。
  • アセットバンドルを構造化して複製を最小限に抑えます。詳細については、アセットの複製 を参照してください。

アセットバンドルにマテリアルと シェーダーバリアントコレクション を追加して、どのシェーダーバリアントを含めるか指定できます。

アセットバンドルを 1 つ作成すると、不要になってもメモリに残ってしまうシェーダーが出てきます。アセットバンドルは部分的にアンロードできないためです。これを回避するには、例えば ‘森林’ アセットバンドルと ‘砂漠’ アセットバンドルなど、一緒に使用するシェーダーのグループごとに別々のアセットバンドルを作成します。ロードされたアセットバンドルの管理 または Addressables システムを使用する場合は Addressables システムのメモリ管理 を参照してください。

デフォルトのシェーダーキーワード
シェーダーのメモリ使用量の制御