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