コンテンツにスキップ

Addressables 分析

Addressables Document

  • Resources.Load では実質的なメモリ管理ができず、すべてのリソースがランタイム時にメモリへ載ります。
  • すべてのリソースがビルドに含まれるため、初回ビルドサイズが大きくなります。
  • 更新のたびにアプリを再配布する必要があります。
項目意味
Lazy Loading- 必要なタイミングでのみリソースを読み込み、メモリを節約します。
- DLC のようにバンドル単位で分けてロードできます。
Catalog ベース- リモートバンドル構成を Catalog というメタデータで管理します。
- catalog は JSON 形式で実装され、Addressables 側で自動的に処理されます。
- 個別ファイル単位でもバージョン管理、チェック、ダウンロードが可能です。
CDN 連携- Firebase、GCS、S3、Cloudflare などの CDN を利用できます。
graph TD
AppStart --> LoadCatalog
LoadCatalog --> GetLocations
GetLocations --> DownloadBundles
DownloadBundles --> LoadAsset
LoadAsset --> Instantiate
概念説明
CatalogAddress -> Bundle の対応情報
Bundle実際の Asset をまとめたパッケージ単位
Provider読み込み方式(Local / Remote)

同じ Prefab を次の方法で呼び出した場合…

3.1 LoadAssetAsync と InstantiateAsync の違い

Section titled “3.1 LoadAssetAsync と InstantiateAsync の違い”
項目LoadAssetAsyncInstantiateAsync
戻り値元の Asset(Prefab、Sprite、ScriptableObject など)シーン上に配置された GameObject インスタンス
GameObject 生成❌ しない✅ すぐに生成
依存ロード✅ 関連バンドルをロード✅ 関連バンドルをロード
実際に使えるタイミングAsset 参照のみ。Instantiate が別途必要そのままアクティブ状態で利用可能
メモリ使用量Asset 分のみAsset + Instance 分
Pooling 連携自前で Instantiate + Pool 構成が必要そのままプールへ返却可能
再利用戦略同じ Asset を何度も Instantiate できるInstance 再利用が一般的
Release 対象Asset Handle の解放Instance と Asset Handle の両方を管理する必要あり
Addressables.ReleaseAsset の寿命管理が中心インスタンス返却後に ReleaseInstance が必要
大量生成時の性能Instantiate コストは発生同等。内部で Instantiate を行うため
UI / Popup との相性❌ 手間がかかる✅ 非常に相性が良い
Data Asset への適性✅ ScriptableObject や設定読込に向く❌ 不向き
ミスしやすい点Asset だけ Release して Instance 参照を残してしまうプールに戻したまま Handle を Release すると壊れる