アセットバンドル を使用する場合、2 つ以上のオブジェクトで 1 つのシェーダーを参照すると、複製されたシェーダーがコンパイルされる場合があります。 例:
これにより、シェーダーが使用するメモリとストレージスペースが増加し、ドローコールのバッチ処理 が中断される場合があります。
これを回避するには、以下のアプローチを使用します。
アセットバンドルにマテリアルと シェーダーバリアントコレクション を追加して、どのシェーダーバリアントを含めるか指定できます。
アセットバンドルを 1 つ作成すると、不要になってもメモリに残ってしまうシェーダーが出てきます。アセットバンドルは部分的にアンロードできないためです。これを回避するには、例えば ‘森林’ アセットバンドルと ‘砂漠’ アセットバンドルなど、一緒に使用するシェーダーのグループごとに別々のアセットバンドルを作成します。ロードされたアセットバンドルの管理 または Addressables システムを使用する場合は Addressables システムのメモリ管理 を参照してください。