Skip to content

Addressables Analysis

Addressables Document

  • Resources.Load offers no practical memory management, so every resource ends up in memory at runtime.
  • All resources are included in the build, which increases the initial build size.
  • Updates require redistributing the app.
ItemMeaning
Lazy Loading- Loads resources only when needed to save memory.
- Bundles can be split and loaded like DLC.
Catalog-based- Manages remote bundle structure through metadata called a Catalog.
- The catalog is represented as JSON and is handled automatically by Addressables.
- Individual files can also be versioned, checked, and downloaded independently.
CDN integration- Works with CDNs such as Firebase, GCS, S3, and Cloudflare.
graph TD
AppStart --> LoadCatalog
LoadCatalog --> GetLocations
GetLocations --> DownloadBundles
DownloadBundles --> LoadAsset
LoadAsset --> Instantiate
ConceptDescription
CatalogMapping information from Address to Bundle
BundleA package-like unit that groups actual assets
ProviderLoading strategy (Local / Remote)

When you access the same prefab using the following methods…

3.1 Difference between LoadAssetAsync and InstantiateAsync

Section titled “3.1 Difference between LoadAssetAsync and InstantiateAsync”
ItemLoadAssetAsyncInstantiateAsync
Return typeOriginal asset (Prefab, Sprite, ScriptableObject, etc.)GameObject instance placed in the scene
Creates GameObject❌ No✅ Immediately
Dependency loading✅ Loads related bundles✅ Loads related bundles
When it becomes usableOnly the asset reference is available; you still need InstantiateReady to use immediately in an active state
Memory usageOccupies asset memory onlyOccupies asset + instance memory
Pooling integrationRequires manual Instantiate + pool setupCan return the instance directly to a pool
Reuse strategyThe same asset can be instantiated many timesReusing instances is more common
Release targetFocused on releasing the asset handleMust manage both the instance and the asset handle
Addressables.ReleaseMainly for asset lifetime managementRequires ReleaseInstance after returning the instance
Performance for many spawnsInstantiate cost still existsSame, because Instantiate is performed internally
Suitable for UI / Popup❌ Inconvenient✅ Very suitable
Suitable for data assets✅ Good for ScriptableObject and config loading❌ Not appropriate
Common pitfallReleasing only the asset while keeping instance references aliveReleasing the handle while the pooled instance is still in use can break things