アセットバンドルを定義する場合には、いくつかのルールに注意する必要があります。
これらのルールをふまえたうえで、任意のアセットを任意のバンドルに自由に割り当てることができます。ただし、バンドルを設定する場合には、以下のような方法をいくつか検討する必要があります。
論理要素別の分類という方法を使用して、プロジェクトの各アセットバンドルに含まれるものを整理することができます。この方法の原則では、コンテンツの各要素が表すプロジェクトの機能的な部分に基づいて整理します。この機能的な要素には、UI やキャラクター、環境 (背景)、その他アプリケーションのライフタイム全体を通して頻繁に表示される可能性のある要素が含まれます。
アセットバンドルを論理要素別に整理する方法は、ダウンロードコンテンツ (DLC) に最適です。プロジェクトに小さい変更を加えることが簡単になり、変更されていない残りのアセットを大量に再ダウンロードする必要がないためです。
この方法を正しく導入するためには、アセットをバンドルに割り当てる開発担当者が、プロジェクトのどこで、どのアセットが使用されるかを具体的に把握していることが非常に重要となります。
オーディオトラックや言語のローカライズファイルなど、類似した種類のアセットを 1 つのアセットバンドルに割り当てる分類方法です。
種類別の分類は、めったに変更されないアセットバンドルを確立するのに便利です。この方法でアセットバンドルを分類すると、アセットバンドルの変更が減り、インクリメンタルビルドが行われたときに配布の必要が少なくなることが考えられます。この方法のデメリットは、ランタイムにすべての依存オブジェクトをまとめるため、より多くのアセットバンドルをダウンロードしてロードする必要が生じる可能性があることです。
同時にロードされ、使用されるアセットを同じバンドルにまとめる方法です。このタイプのバンドルは一般的に、ステージ構造のゲームで、各ステージが全く異なる固有のキャラクターやテクスチャ、音楽などを持っている場合に使用されます。この方法を採用するのは、アセットバンドルの中の 1 つのアセットが、同じバンドル内の他のアセットと同じタイミングでしか使用されないことが分かっている場合だけにしてください。同時コンテンツごとの分類で作成されたバンドル内のアセットに対する依存が 1 つでもあると、ロードする時間が大幅に増加します。その 1 つのアセットのために、バンドル全体がダウンロードされるからです。
同時コンテンツごとの分類は、シーンごとのバンドルを作成する際に最もよく使用されます。この割り当て方法では、各シーンのバンドルに、そのシーンのほとんど (またはすべて) の依存関係が含まれるようにする必要があります。
注意シーンが含まれているアセットバンドルをビルドする場合、そのシーンが参照するアセットも、(明示的に別のアセットバンドルに割り当てられている場合は除いて) 自動的にアセットバンドルに含まれます。これは同時コンテンツごとの分類を行うときに便利です。ただし、参照されているアセットが、別のアセットバンドルに組み込む他のシーンでも使用されている場合は、重複するアセットがないか注意する必要があります。
プロジェクトでは、必要に応じてこれらの戦略を組み合わせることが可能なため、組み合わせて使用することをお勧めします。あらゆるシナリオに最適なアセットの割り当て方法を使用することで、すべてのプロジェクトの効率が大幅に向上します。
例えば、ひとつのプロジェクトで、UI 要素はプラットフォーム別にまとめてバンドルに入れ、インタラクティブコンテンツはステージやシーンごとにまとめるということも可能です。
いずれの方法を採用する場合も、以下にご紹介するヒントを参考にしてください。