Unityで外部ファイルの読み込み・更新・ビルド容量の削減といった目的で登場するのが、
「AssetBundle(アセットバンドル)」と「Addressables(アドレッサブルズ)」です。
市販のスマホゲームを起動したときに、最初に「追加データをダウンロードしています…」と表示される、あの処理。
まさにそれを実現する仕組みが、これらの機能です。
アプリ本体のビルド容量を小さく抑えつつ、必要なデータだけを後から取得することで、
初回インストールのハードルを下げたり、運用中の追加データ配信も可能になります。
どちらも「ビルド後のリソース管理」に使われますが、仕組みや運用の考え方は大きく異なり、
「結局どっちを使えばいいの?」と迷う開発者も多いはずです。KuroMikanもそうです。
この記事では、自身の勉強も兼ねてそれぞれの特徴と用途、選び方について分かりやすく解説していきます。
そもそもAssetBundleとは?
AssetBundleは、ゲームに使う画像やPrefab、音声などのリソースを「後から読み込む」ための仕組みです。
たとえば以下のような場面で使われます。
- アプリの初期サイズを小さくしたい
- ガチャに追加したキャラだけ後から読み込みたい
- イベント用リソースを都度差し替えたい
特徴
- Unity 4から使われている古参の仕組み
- シンプルに使えるが、依存関係の管理は開発者の責任(!?)
- ローカルとリモート両方対応可能
- 使いこなせば最小構成の配信に強い
AssetBundle bundle = AssetBundle.LoadFromFile("Assets/Bundles/itembundle");
GameObject prefab = bundle.LoadAsset<GameObject>("LegendaryBanana");
Instantiate(prefab);
手動管理の必要があるってどういうこと?
AssetBundleでは、以下のような作業をすべて自分で管理・設計する必要があります:
- 依存関係の明示的な解決
→ 例えばPrefabが参照している画像・マテリアルなどが、別バンドルに分かれていた場合、それらを先に自力で読み込んでおかないとエラーになります。 - キャッシュ管理の実装
→ 端末に保存したバンドルを使い回すためのキャッシュ処理や、更新時の上書きや削除もすべて自分で実装が必要です。 - バージョン管理や更新チェック
→ サーバー上のバンドルファイルとローカルを照らし合わせて、必要な差分のみダウンロードする処理を組む必要があります。
つまり、自由度が高い反面、制作コストも保守コストも重めというのが、AssetBundleの実態です。
Addressablesとは?
Addressablesは、AssetBundleの「手動で管理しないといけなかった不便さ」を解消する、Unity公式の次世代アセット管理システムです。
「アセットにアドレス(名前)をつけておくだけ」で、あとは読み込み・依存解決・キャッシュ・バージョン管理まで自動化されます。
Addressables.LoadAssetAsync<GameObject>("CoolDog").Completed += handle =>
{
GameObject dog = Instantiate(handle.Result);
};
Addressablesが解決してくれること
- 依存関係は自動解決
→ 画像やマテリアルなど、参照されているアセットも自動的にまとめて読み込まれるので、順番を気にしなくてOK。 - キャッシュや再ダウンロード制御も内蔵
→ 古いデータはUnityが自動でバージョン判定して破棄し、最新のものだけ再取得します。 - ラベル管理でグループ分けも簡単
→ アドレス指定だけでなく、「UIラベルの付いたものをすべて読み込み」などの柔軟な操作が可能。 - CDNやUnity Cloudとの連携も前提
→ Unity Cloud Content Delivery(CCD)と連携すれば、差分配信や軽量アップデートも容易になります。
おまけ:Unity Cloud Content Delivery(CCD)とは?
Unityの Addressablesと完全連携 しており、更新・管理がしやすいCDNです。Addressablesで管理するアセットデータをクラウド上に保存しておくために使用します。
いわば「Google Driveだけどゲーム用に最適化されてるやつ」+「CDNで爆速DL可」なイメージです。
AWS S3とどっちがいいか問題についてですが、AWSはプロユースなので個人開発ではUnity CCDを使うのがよいかもしれません。
まずは気になる料金ですが、毎月 50GB の帯域幅までは無料で利用できます。
50GBを超えた分から課金される仕組みで、価格は以下のテーブルに示す毎月の帯域幅の使用状況に基づいて決まります。
| 月間帯域幅使用率 | GB 単価 |
|---|---|
| 最大 50GB | Free |
| 50GB を超えた分 | $0.08 |
| 50TB を超えた分 | $0.06 |
| 500TB を超えた分 | $0.03 |
| 5000TB より大きい | ASK |
無料枠でも個人開発や小規模タイトルには十分すぎる帯域幅がありますね。
- STEP 1Unity Dashboardへアクセス
- STEP 2ショートカットに追加して起動
左メニューから 製品 > コンテンツ管理の「Cloud Contens Delivery」を選択、追加されたらクリック > 右上のLaunch で起動
- STEP 3クレジットカード情報を提出
ページ下の 購入 > 各種情報入力 > 0円で決済
これで準備はOK - STEP 4有効化を確認する
左メニューから プロジェクト > 自分のプロジェクト を選択
「Cloud Contents Delivery」の項目が生えています。
(具体的な使い方はまた別途に)
まとめ:今からやるならAddressables一択!
| 管理項目 | AssetBundle | Addressables |
|---|---|---|
| 依存関係の読み込み順 | 手動で制御 | 自動で解決 |
| キャッシュ保存 | 自分で設計・実装 | 自動で管理 |
| 差分更新やバージョン比較 | 自前実装が必要 | Unity側が提供する機能あり |
| アセットのグループ化 | スクリプトか命名規則 | ラベルとグループでGUI管理 |
このように、AddressablesはAssetBundleの面倒だった部分をほぼすべて自動化してくれる便利ツールとして、モダンなUnity開発では標準になりつつあります。
今から新しくアセット管理を始めるなら、Addressablesを第一候補にするのがおすすめです。

