Back to Writing
NOTESunityaddressablescatalogasset-managementremote-content

Unity Addressables Guide (8) — Loading Part 2: Catalogs

January 1, 2020Updated Feb 17, 2026

![](

6LQVzONEeeuJBLERyWwg.m6j5QaFQlUQzjtQJ-odzKkigch3TaaMHWcXI-FEAmCcg.PNG.cdw0424/image.png?type=w966)

In the previous post, I briefly mentioned catalogs and moved on. I want to provide additional detail since a clear understanding is important.

A Catalog maps each address to its corresponding asset.

If needed, you can change the mapping to load a different bundle.

The simplest way to think about it: a catalog is a dictionary that maps addresses to asset information.

For example, if you have the address "MyAssets/Character", the catalog tells the Addressables system where to find the actual asset bundle containing that character.

What Catalogs Do:

  1. Map addresses to assets: The catalog maintains a database of all addressable addresses and their asset bundle locations
  2. Version management: Different versions of catalogs can be maintained for different builds
  3. Dynamic loading: Different catalogs can be loaded at runtime to change which assets get loaded
  4. Remote asset management: Catalogs can point to remote asset bundles, enabling dynamic content updates

Catalog File Structure:

The catalog file (typically addressables_content_state.bin) contains:

  • Address entries
  • Bundle information
  • Dependencies
  • Hash values for validation

Loading Catalogs:

When the Addressables system starts, it loads the default catalog. You can also load additional catalogs at runtime:

// Initialize Addressables with the default catalog
await Addressables.InitializeAsync();

// Load an additional catalog from a URL
var catalogHandle = Addressables.LoadContentCatalogAsync("https://example.com/catalogs/v2_catalog.json");
await catalogHandle.Task;

Using Multiple Catalogs:

One of the powerful features of Addressables is the ability to work with multiple catalogs simultaneously. This enables:

  • A/B Testing: Load different versions of assets for different user groups
  • Region-specific content: Load different regional catalogs
  • DLC management: Maintain separate catalogs for different DLC packages

Example: Loading a Region-Specific Catalog

string region = GetUserRegion();
string catalogUrl = $"https://cdn.example.com/catalogs/{region}_catalog.json";
var catalogHandle = Addressables.LoadContentCatalogAsync(catalogUrl);
await catalogHandle.Task;

// Now load assets using the region-specific catalog
var prefabHandle = Addressables.LoadAssetAsync<GameObject>("RegionalPrefab");
var prefab = await prefabHandle.Task;

Catalog Validation:

Addressables has built-in validation features to ensure catalog integrity:

  • Hash checking: Each catalog entry can be verified against stored hashes
  • Dependency resolution: Dependencies between assets are resolved automatically
  • Error handling: Invalid entries are reported and can be handled gracefully

Best Practices:

  1. Organize by content type: Group related assets in the same catalog for easier management
  2. Version your catalogs: Use versioning in catalog file names for easy rollback
  3. Test catalog loading: Always test loading different catalogs under various network conditions
  4. Monitor catalog size: Keep catalog sizes reasonable for fast loading

Debugging Catalogs:

You can use the Addressables window in the Unity Editor to inspect catalog contents:

  • Window > Asset Management > Addressables
  • View loaded catalogs and their contents
  • Verify address-to-bundle mappings

Performance Considerations:

  • Lazy loading: Catalogs are loaded on-demand, not preloaded
  • Caching: Loaded catalogs are cached in memory for fast access
  • Network efficiency: Load catalogs only when needed to reduce network traffic

The Addressables catalog system is the foundation of its power and flexibility. Understanding how catalogs work enables you to build more sophisticated asset management systems in your Unity projects.

In the next post, we will look at practical examples of working with catalogs and advanced loading strategies.