AssetBundle (アセットバンドル) を使用するに当たっては、好きなアセットを好きなバンドルに自由に割り当てることができます。ただし、バンドルのセットアップに関しては、いくつかの異なる方法を検討する必要があります。異なる分類方法の中から、それぞれのプロジェクトに適したものを使用します。必要に応じて複数の方法を組み合わせることも可能です。
論理要素別の分類は、アセットを、プロジェクト内における機能的な要素ごとにアセットバンドルに割り当てる方法です。この機能的な要素には、例えば UI やキャラクターや環境 (背景)、またその他、アプリケーションのライフタイムを通して頻繁に登場する可能性のある要素が含まれます。
論理要素別の分類は DLC (ダウンロードコンテンツ) に最適です。その理由は、各要素が別々に分かれているため、ある 1 つの要素に変更を加えた場合に、変更されていない余計なアセットをダウンロードする必要がなくなるからです。
この方法を正しく導入するためには、アセットをバンドルに割り当てる開発担当者が、プロジェクトのどこで、どのアセットが使用されるかを具体的に把握していることが非常に重要となります。
例えばオーディオトラックや言語ローカライズファイルなど、類似した種類のアセットをひとつのアセットバンドルに割り当てる分類方法です。
種類別の分類は、複数のプラットフォームで使用するアセットバンドルをビルドする場合に適した方法のひとつです。例えば、オーディオ圧縮の設定が Windows と Mac で全く同じである場合、全オーディオデータ (だけ) をまとめてアセットバンドルに入れ、それらのバンドルを再利用することができます。一方シェーダーは、各プラットフォームにより特化したオプションでコンパイルされる傾向にあるため、Mac 向けにビルドしたシェーダーバンドルが Windows で再利用できるとは限りません。また、この分類方法は、コードスクリプトやプレハブなどと比べてテクスチャー圧縮の形式や設定の変更頻度が低くなるため、より多くのバージョンの Unity プレイヤーとの互換性をアセットバンドルに持たせたい場合に非常に適しています。
同時に読み込み・使用されるコンテンツを同じバンドルにまとめる方法です。このタイプのバンドルは一般的には、ステージ構造のゲームで、各ステージが全く異なる固有のキャラクターやテクスチャー、音楽などを持っている場合に使用されます。この方法を採用するのは、アセットバンドルに含まれるアセットは、同じバンドル内の他のアセットと同時にしか使用されないことが確実でに分かっている場合のみにしてください。同時コンテンツごとの分類で作成されたバンドル内のアセットに対する依存がひとつでもあると、読み込み時間が大幅に増加します。そのたったひとつのアセットのために、バンドルが丸ごとダウンロードされてしまうからです。
同時コンテンツごとの分類は、シーンごとのバンドルを作成する際に最もよく使用されます。この割り当て方法では、各シーンのバンドルに、そのシーンのほとんど (または全て) の依存を含めます。
ひとつのプロジェクトで複数の方法を併用することも可能です。必要に応じて上手に組み合わせてみてください。アセットを最適な方法で割り当てることで、プロジェクトの効率性を大幅に向上させることができます。
例えば、ひとつのプロジェクトで、UI 要素はプラットフォーム別にまとめてバンドルに入れ、インタラクティブコンテンツはステージやシーンごとにまとめるということも可能です。
いずれの方法を採用する場合も、以下にご紹介するヒントを参考にしてください。