unity-addressables-design

Provides source-anchored design rules for Unity Addressables 1.22.3 and 2.9.1 APIs.

Updated Aug 18, 2026
One-click install
npx skills add https://github.com/ethanJPope/Our-Main-Hackathon-Game --skill unity-addressables-design-ethanjpope
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: unity-addressables-design
Source: https://github.com/ethanJPope/Our-Main-Hackathon-Game/tree/main/.agents/skills/unity-skills/skills/addressables-design
Command: npx skills add https://github.com/ethanJPope/Our-Main-Hackathon-Game --skill unity-addressables-design-ethanjpope

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Writing or migrating Unity Addressables code often fails because training data mixes the 1.22.3 and 2.9.1 API surfaces, producing compile errors, memory leaks from unreleased handles, and broken scene or catalog update flows. This Skill supplies version-tagged, source-cited rules so generated Addressables code compiles and behaves correctly on both Unity 2022 and Unity 6. ## Core Features & Use Cases - Version Difference Matrix: Maps every removed, obsoleted, or newly added API between Addressables 1.22.3 and 2.9.1, including SceneReleaseMode, IEnumerable overloads, and removed legacy locators. - Sub-document Routing: Directs detailed lookups to focused references covering initialization, handle lifecycle, asset loading, scene loading, catalog updates, downloads, AssetReference fields, and 30 verified pitfalls. - Migration Shield: Provides a legacy-to-modern API replacement table so 1.22.3 code can be ported to 2.9.1 without compile errors. - Use Case: When asked to write an Addressables scene-loading flow for Unity 6, consult this Skill to correctly use LoadSceneAsync with SceneReleaseMode and avoid the removed non-Async APIs. ## Quick Start Load this Skill before writing or reviewing any Unity Addressables loading, scene, catalog update, or AssetReference code and follow its version-tagged rules.

Frequently Asked Questions about unity-addressables-design

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I load assets with Unity Addressables without memory leaks?

Every LoadAssetAsync or InstantiateAsync call returns a handle with refcount 1 that must be released via Addressables.Release or Addressables.ReleaseInstance. Forgetting to release keeps the AssetBundle in memory indefinitely, and using GameObject.Destroy on an instantiated instance does not decrement the refcount.

What changed in Addressables 2.9.1 compared to 1.22.3?

Addressables 2.9.1 removed all non-Async APIs like LoadAsset and Instantiate, replaced IList<object> multi-key overloads with IEnumerable, and added SceneReleaseMode for scene bundle lifetime control. LegacyResourcesLocator, DiagnosticEvent, and RegisterDiagnosticCallback were also removed.

Why does my Addressables code fail to compile after upgrading to Unity 6?

Unity 6 ships Addressables 2.9.1, which removed every [Obsolete] non-Async method such as LoadAsset, Instantiate, LoadScene, and Initialize. Replace each with its Async counterpart and switch IList<object> key arguments to IEnumerable overloads.

Does Addressables WaitForCompletion work on WebGL?

WaitForCompletion is unsupported on WebGL and throws because the JS backend cannot synchronously pump async operations. Use await handle.Task or the Completed event instead, and guard any WaitForCompletion usage with platform conditionals.

How do I update Addressables catalogs without wasting bandwidth?

Call CheckForCatalogUpdates first to get only the stale catalog locator IDs, then pass that list to UpdateCatalogs instead of updating everything. On 2.9.1 you can also pass autoCleanBundleCache true to remove orphaned bundles in the same call.

Why does loading the same AssetReference twice throw an exception?

AssetReference caches its OperationHandle, so calling LoadAssetAsync twice without releasing throws an active-handle InvalidOperationException. Either call ReleaseAsset between loads or use Addressables.LoadAssetAsync with ref.RuntimeKey for independent concurrent loads.