これはゲーム開発エンジン Unity に関する記事です。
公式ドキュメントを誰も和訳してくれないので、自分ですることにしました。
2020年5月1日時点での安定版の最新バージョンは 1.1.10 です。
なので、公式ドキュメントもバージョン 1.1 向けのものを使います。
そのまま翻訳しても意味不明な文章が多いので、意訳も含まれています。
※安定版は、Unity 本体の最新バージョン 2019.3 で動作確認済みです。
※動作確認と動作保証は全く別次元のものです。
※開発版の最新バージョンは 1.8.3 です。こちらは 2019.3 で動作するか全くの未知なので、扱うことは避けました。
以下は、
https://docs.unity3d.com/Packages/com.unity.addressables@1.1/manual/index.html
に書かれている内容を翻訳したものです。
※名前が長すぎるので、以下、AASという略称を使います。
AASは「アドレス」による簡単なロード方法を提供します。
簡略化されたコンテンツ・パックの作成とデプロイによって、アセット管理の余計な手間を減らします。
AASは依存関係を定義したデータを使って、どんな場所からでもアセットをロードできるようにするため、非同期ローディングを使用します。
直接参照、従来のアセット・バンドル、アセット管理用の Resources フォルダを使うかどうかに関わらず、AASはゲームをより動的に動作させることができる簡略化された手段を提供します。
アセットは、ゲームやアプリを作るときに使用するコンテンツのことです。
例えば、プレハブ、テクスチャー、マテリアル、オーディオクリップ、アニメーション…などのことです。
「アドレッサブル」と呼ばれるアセットを作成することで、どこからでも重複のない(一意の)アドレスで呼び出せるようになります。
アセットがローカルのアプリ内またはコンテンツ配信用ネットワーク上に存在しているかどうかに関わらず、AASを設置すればアセットを返すことができます。設定したアドレスを使って単一のアドレッサブル・アセットをロードしたり、自分で定義したカスタムグループラベルを使った多くのアドレッサブル・アセットをロードできます。
ゲームアセットを構造化する従来の方法では、コンテンツを効率良くロードすることが困難でした。アドレッサブルはイテレーション・サイクル(アセットを更新するたびに繰り返し発生する単純作業)を短縮し、デザイン、コーディング、アプリのテストにより多くの時間を使えるようにします。
- イテレーション時間:
アドレスによるコンテンツ参照は非常に効率が良いです。最適化されたコンテンツはコードの変更を必要としません。 - 依存関係の管理:
AASは必要なコンテンツの全ての依存関係を返すため、コンテンツを返す前に、すべてのメッシュ、シェーダー、アニメーションなどをロードします。 - メモリ管理:
AASはアセットをアンロードおよびロードし、参照を自動的にカウントして、潜在的なメモリの問題を発見するのに役立つ堅牢なプロファイラーを提供します。 - コンテンツ・パッキング:
AASは複雑な依存関係チェーンをマッピングして理解するため、アセットを移動または名前変更する場合でも、バンドルを効率良くパッキングします。ローカルでもリモートでもアセットを簡単に準備して設置でき、ダウンロード可能なコンテンツとアプリケーションサイズの減少をサポートできます。
AASは直接参照、Resources フォルダ、アセットバンドルを使っているかどうかに関わらず、アップグレード用のマイグレーション・パスを提供します。
どのバージョンからなのかは分からないのですが、Resources フォルダを使った読み込みが非推奨になり、ビルド対象から除外されるようになりました(Resources フォルダは Unity エディタで編集しているときしか使えない)。
そのため、ビルドしたゲームで動的にデータを読み込むには、アセットバンドルを使うか、このAASを使う必要があります。
多分…ですが、データをパッキングしなければ、ローカルにある生データを直接読んだり、自分独自のパッキングデータを使って読み込むことはできるんじゃないかとは思います。ただ、マルチプラットフォームに対応する必要がある場合、プラットフォーム毎に自分でデータを読み込む処理を作らなければならないことになるので、その手間を考えると、アセットバンドルかAASを使うという選択になると思います。
開発期間が無限にあるなら、自分独自のパッキングデータを作るのも良いですし、それはそれで面白そうですが、ほとんどのプロジェクトは超タイトなスケジュールで進めることを要求されるので、既にあるものを使う…という選択肢しかなくなります。
アセットバンドルは Unity を使う上での鬼門(まともに使えるようになるまでのコストが異常に高い機能)でしたが、ここまでの説明を読んだ限りでも、アセットバンドルでめんどくさくてやってられなかったところを、AASが勝手にやってくれるようになったっぽいな…と分かります。