アセットバンドルは、他のバンドル内に UnityEngine.Object
への参照がひとつでもあると、他のアセットバンドルに依存する可能性があります。この依存は、参照先の UnityEngine.Object
がどのアセットバンドルにも含まれていない場合には発生しません。この場合は、アセットバンドルのビルド時に、そのバンドルの依存先オブジェクトが同バンドル内にコピーされます。複数のバンドル内のオブジェクトが、どのバンドルにも割り当てられていない同一オブジェクトへの参照を含んでいる場合、そのオブジェクトに依存する各バンドルそれぞれにそのオブジェクトが、作成されたアセットバンドル内にコピーされます。
アセットバンドルに依存が含まれる場合は、インスタンス化しようとしているオブジェクトより先にそのアセットバンドルを読み込むことが重要です。 Unity は自動的には依存関係を読み込みません。
例えば、バンドル1 にあるマテリアルが バンドル2 のテクスチャを参照している場合を考えてみてください。
この例では、 バンドル1 からマテリアルを読み込む前に、 バンドル2 をメモリに読み込む必要があります。 バンドル1 と バンドル2 を読み込む順序はどちらが先でも問題ありません。重要なのは バンドル1 からマテリアルを読み込む前に バンドル2 を読み込むということです。次の項では、前の項で触れた AssetBundleManifest
オブジェクトを使用して、ランタイムで依存の定義および読み込みを行う方法を説明します。