AssetBundle (アセットバンドル) を使用するに当たっては、好きなアセットを好きなバンドルに自由に割り当てることができます。ただし、バンドルのセットアップに関しては、いくつかの異なる方法を検討する必要があります。異なる分類方法の中から、それぞれのプロジェクトに適したものを使用します。必要に応じて複数の方法を組み合わせることも可能です。
論理要素別の分類は、アセットを、プロジェクト内における機能的な要素ごとにアセットバンドルに割り当てる方法です。この機能的な要素には、例えば UI やキャラクターや環境(背景)、またその他、アプリケーションのライフタイムを通して頻繁に登場する可能性のある要素が含まれます。
論理要素別の分類は DLC (ダウンロードコンテンツ)に最適です。その理由は、各要素が別々に分かれているため、ある 1 つの要素に変更を加えた場合に、変更されていない余計なアセットをダウンロードする必要がなくなるからです。
この方法を正しく導入するためには、アセットをバンドルに割り当てる開発担当者が、プロジェクトのどこで、どのアセットが使用されるかを具体的に把握していることが非常に重要となります。
例えばオーディオトラックや言語ローカライズファイルなど、類似した種類のアセットをひとつのアセットバンドルに割り当てる分類方法です。
種類別の分類は、複数のプラットフォームで使用するアセットバンドルをビルドする場合に適した方法のひとつです。例えば、オーディオ圧縮の設定が Windows と Mac で全く同じである場合、全オーディオデータ(だけ)をまとめてアセットバンドルに入れ、それらのバンドルを再利用することができます。一方シェーダーは、各プラットフォームにより特化したオプションでコンパイルされる傾向にあるため、Mac 向けにビルドしたシェーダーバンドルが Windows で再利用できるとは限りません。また、この分類方法は、コードスクリプトやプレハブなどと比べてテクスチャー圧縮の形式や設定の変更頻度が低くなるため、より多くのバージョンの Unity プレイヤーとの互換性をアセットバンドルに持たせたい場合に非常に適しています。
同時に読み込み・使用されるコンテンツを同じバンドルにまとめる方法です。このタイプのバンドルは一般的には、ステージ構造のゲームで、各ステージが全く異なる固有のキャラクターやテクスチャー、音楽などを持っている場合に使用されます。この方法を採用するのは、アセットバンドルに含まれるアセットは、同じバンドル内の他のアセットと同時にしか使用されないことが確実でに分かっている場合のみにしてください。同時コンテンツごとの分類で作成されたバンドル内のアセットに対する依存がひとつでもあると、読み込み時間が大幅に増加します。そのたったひとつのアセットのために、バンドルが丸ごとダウンロードされてしまうからです。
同時コンテンツごとの分類は、シーンごとのバンドルを作成する際に最もよく使用されます。この割り当て方法では、各シーンのバンドルに、そのシーンのほとんど(または全て)の依存を含めます。
ひとつのプロジェクトで複数の方法を併用することも可能です。必要に応じて上手に組み合わせてみてください。アセットを最適な方法で割り当てることで、プロジェクトの効率性を大幅に向上させることができます。
例えば、ひとつのプロジェクトで、UI 要素はプラットフォーム別にまとめてバンドルに入れ、インタラクティブコンテンツはステージやシーンごとにまとめるということも可能です。
いずれの方法を採用する場合も、以下にご紹介するヒントを参考にしてください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.