When defining AssetBundles there are a few rules to be aware of:
Beyond those rules you are free to assign any asset to any bundle you desire. However, there are certain strategies to consider when setting up your bundles.
Logical Entity Grouping is a strategy you can use to decide how to organize what goes into each of your project’s AssetBundles. The principle is to base your decisions on the functional portion of the project that each piece of content represents. This includes sections such as User-Interface, characters, environments, and anything else that may appear frequently throughout the lifetime of the application.
Organizing your AssetBundles by Logical Entity Grouping is ideal for downloadable content (DLC), because it allows you to more easily make small changes to your project which don’t require your users to re-download large amounts of additional, unchanged, assets.
この方法を正しく導入するためには、アセットをバンドルに割り当てる開発担当者が、プロジェクトのどこで、どのアセットが使用されるかを具体的に把握していることが非常に重要となります。
Type Grouping is a strategy where you assign assets of similar type, such as audio tracks or language localization files, to a single AssetBundle.
Type grouping can be useful to establish AssetBundles that change rarely. Grouping AssetBundles this way may result in fewer AssetBundles changing and requiring distribution when an incremental build is done. The downside is that more AssetBundles may need to be downloaded and loaded to assemble all dependent objects together at runtime.
同時に読み込み・使用されるコンテンツを同じバンドルにまとめる方法です。このタイプのバンドルは一般的には、ステージ構造のゲームで、各ステージが全く異なる固有のキャラクターやテクスチャー、音楽などを持っている場合に使用されます。この方法を採用するのは、アセットバンドルに含まれるアセットは、同じバンドル内の他のアセットと同時にしか使用されないことが確実でに分かっている場合のみにしてください。同時コンテンツごとの分類で作成されたバンドル内のアセットに対する依存がひとつでもあると、読み込み時間が大幅に増加します。そのたったひとつのアセットのために、バンドルが丸ごとダウンロードされてしまうからです。
同時コンテンツごとの分類は、シーンごとのバンドルを作成する際に最もよく使用されます。この割り当て方法では、各シーンのバンドルに、そのシーンのほとんど (または全て) の依存を含めます。
Note: When building an AssetBundle containing a Scene, any Assets referenced by that Scene will also be automatically included in the AssetBundle, unless those Assets are explicitly assigned to a different AssetBundle. This is convenient when doing Concurrent Content Grouping, but you need to keep an eye out for duplicated assets if any referenced assets are also used by other scenes that you are building into separate AssetBundles.
A project absolutely can and should mix these strategies as your needs require. Using the optimal asset assignment strategy for any given scenario greatly increases efficiency for any project.
例えば、ひとつのプロジェクトで、UI 要素はプラットフォーム別にまとめてバンドルに入れ、インタラクティブコンテンツはステージやシーンごとにまとめるということも可能です。
いずれの方法を採用する場合も、以下にご紹介するヒントを参考にしてください。