跳到正文
FunCoding

unity-addressables-design

Source-anchored design rules for Unity Addressables 1.22.3/2.9.1

Star
1,830
分类
其他
许可证
MIT
最近提交
2026年10月12日

SkillsForUnity/unity-skills~/skills/addressables-design/SKILL.md

在 GitHub 上查看

Before calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.

Triggers

  • Writing or reviewing Addressables code
  • Async asset/scene loading
  • Hot-update or catalog refresh
  • Version migration
  • 编写或审查 Addressables 代码、异步加载资源/场景、配置热更新或目录刷新、版本迁移

Addressables - Design Rules

Advisory module. Every rule is distilled from Unity Addressables source at two versions:

  • 1.22.3 — [email protected] (Unity 2022, min 2019.4)
  • 2.9.1 — com.unity.addressables@8460f1c9c927 (Unity 6, min 2023.1)

Each rule cites a concrete file/line so the reasoning is auditable and the AI does not improvise against stale memory.

Mode: Documentation only — no REST skills to gate; load freely under any operating mode (Approval / Auto / Bypass).

When to Load This Module

Load before writing or reviewing any of:

  • Addressables.InitializeAsync() / LoadContentCatalogAsync() bootstrap code
  • LoadAssetAsync<T> / LoadAssetsAsync<T> / InstantiateAsync and their handle release
  • LoadSceneAsync / UnloadSceneAsync — especially with SceneReleaseMode (2.9.1)
  • CheckForCatalogUpdates → UpdateCatalogs → CleanBundleCache patch flow
  • GetDownloadSizeAsync / DownloadDependenciesAsync / ClearDependencyCacheAsync
  • AssetReference / AssetReferenceT<T> field declarations and load/release
  • Any code that calls WaitForCompletion() or uses AsyncOperationHandle directly
  • Migration from 1.22.3 to 2.9.1 — removed APIs, changed overload signatures

Version Difference Matrix

Area1.22.3 (Unity 2022)2.9.1 (Unity 6)
Non-Async variants (LoadAsset, Instantiate, LoadScene, etc.)[Obsolete] — compile warningRemoved — compile error
IList<object> multi-key overloadsPresentReplaced by IEnumerable
SceneReleaseMode enumDoes not existNew — controls bundle lifetime on scene unload
LoadSceneAsync releaseMode paramAbsentSceneReleaseMode.ReleaseSceneWhenSceneUnloaded default
LoadAssetsAsync<T>(string key, ...)Does not existNew string-key overload
UpdateCatalogs(bool autoCleanBundleCache, ...)Does not existNew overload
LegacyResourcesLocator / LegacyResourcesProviderPresentRemoved
DiagnosticEvent / DiagnosticEventCollectorPresentRemoved
ResourceManagerEventCollectorPresentRemoved
ResourceManager.RegisterDiagnosticCallback()[Obsolete]Removed
InitializationOperation property[Obsolete], returns defaultRemoved
BinaryCatalogInitializationDataDoes not existNew
CachedFileProviderDoes not existNew

Critical Rule Summary

#RuleVersionSource anchor
1All non-Async variants (LoadAsset, Instantiate, LoadScene, UnloadScene, GetDownloadSize, DownloadDependencies, Initialize, LoadContentCatalog) are [Obsolete] in 1.22.3 and removed in 2.9.1. Always use the *Async form.BothAddressables.cs:1.22.3:862-2226, Addressables.cs:2.9.1 (absent)
2Every AsyncOperationHandle returned by a Load/Instantiate call MUST be released via Addressables.Release(handle). Forgetting leaks the AssetBundle in memory indefinitely — even after the scene unloads.BothAsyncOperationHandle.cs:2.9.1:178-203
3WaitForCompletion() blocks the calling thread synchronously. On WebGL it is unsupported and throws. Never call it on the main thread in production; use await handle.Task or the Completed event instead.BothAsyncOperationHandle.cs:2.9.1:178-203
4LoadSceneAsync in 2.9.1 adds SceneReleaseMode releaseMode (default ReleaseSceneWhenSceneUnloaded). If a Single-mode load unloads your additive scene and you need the bundle to stay alive, pass OnlyReleaseSceneOnHandleRelease and release the handle manually.2.9.1ISceneProvider.cs:2.9.1:14-26, Addressables.cs:2.9.1:1914
5Multi-key overloads changed from IList<object> to IEnumerable in 2.9.1. The old IList<object> overloads no longer exist — pass IEnumerable or string[].2.9.1Addressables.cs:2.9.1:1148,1566,1636
6LegacyResourcesLocator and LegacyResourcesProvider were removed in 2.9.1. Do not reference them in code targeting Unity 6.2.9.1Runtime/ResourceLocators/ (absent in 2.9.1)
7ResourceManager.RegisterDiagnosticCallback() was [Obsolete] in 1.22.3 and removed in 2.9.1. Use the Addressables Profiler window instead.2.9.1ResourceManager.cs:1.22.3:353 (absent in 2.9.1)
8Catalog update flow is strictly ordered: CheckForCatalogUpdates → UpdateCatalogs. In 2.9.1, UpdateCatalogs(bool autoCleanBundleCache, ...) can auto-clean stale bundles in one call.BothAddressables.cs:2.9.1:2092-2147
9AssetReference.LoadAssetAsync<T>() returns a handle that must be released via assetRef.ReleaseAsset(), NOT Addressables.Release(handle). Mixing the two causes double-release exceptions.BothAssetReference.cs:1.22.3:44-46
10InitializationOperation property (1.22.3) is [Obsolete] and returns default. Do not await it. Use await Addressables.InitializeAsync() instead.1.22.3Addressables.cs:1.22.3:981-982

Sub-doc Routing

Sub-docWhen to read
INIT.mdInitializeAsync / LoadContentCatalogAsync / catalog loading order / autoReleaseHandle semantics
HANDLES.mdAsyncOperationHandle<T> lifecycle — Completed, WaitForCompletion, Release, IsDone, Status, OperationException, ref-counting
LOADING.mdLoadAssetAsync, LoadAssetsAsync (all overloads + version diff), MergeMode, InstantiateAsync, ReleaseInstance
SCENE.mdLoadSceneAsync / UnloadSceneAsync / SceneInstance.ActivateAsync / SceneReleaseMode (2.9.1) / activateOnLoad=false pattern
UPDATE.mdCheckForCatalogUpdates → UpdateCatalogs flow / autoCleanBundleCache (2.9.1) / CleanBundleCache / ResourceLocatorInfo
DOWNLOAD.mdGetDownloadSizeAsync / DownloadDependenciesAsync / ClearDependencyCacheAsync / DownloadStatus struct
ASSETREF.mdAssetReference / AssetReferenceT<T> / LoadAssetAsync / ReleaseAsset / OperationHandle property / IsDone guard
PITFALLS.md30 concrete hallucination pitfalls with version tags + legacy API migration section

Routing to Other Modules

  • Asmdef layout for Addressables consumers → load asmdef
  • Async orchestration across multiple Addressables operations → load async
  • Architecture-level decisions (Addressables vs YooAsset, group strategy) → load architecture
  • Performance review of load/release hot paths → load performance

Version Scope

This document targets two versions:

  • 1.22.3 — shipped with Unity 2022 LTS. Contains [Obsolete] non-Async variants still present for migration.
  • 2.9.1 — shipped with Unity 6 (2023.1+). All [Obsolete] APIs removed. New SceneReleaseMode, binary catalog format, AutoGroupGenerator.

When a rule applies to only one version it is tagged [1.22.3] or [2.9.1]. Untagged rules apply to both.

Migration Notes (hallucination shield)

Legacy APIStatusReplacementSource
Addressables.Initialize()[Obsolete] in 1.22.3, removed in 2.9.1Addressables.InitializeAsync()Addressables.cs:1.22.3:862-864
Addressables.LoadAsset<T>(key)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.LoadAssetAsync<T>(key)Addressables.cs:1.22.3:992-1007
Addressables.LoadAssets<T>(keys, cb, mode)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.LoadAssetsAsync<T>(keys, cb, mode)Addressables.cs:1.22.3:1242-1276
Addressables.Instantiate(key, ...)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.InstantiateAsync(key, ...)Addressables.cs:1.22.3:1892-1972
Addressables.LoadScene(key, ...)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.LoadSceneAsync(key, ...)Addressables.cs:1.22.3:2090-2106
Addressables.UnloadScene(handle, ...)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.UnloadSceneAsync(handle, ...)Addressables.cs:1.22.3:2180-2226
Addressables.GetDownloadSize(key)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.GetDownloadSizeAsync(key)Addressables.cs:1.22.3:1547
Addressables.DownloadDependencies(key)[Obsolete] in 1.22.3, removed in 2.9.1Addressables.DownloadDependenciesAsync(key)Addressables.cs:1.22.3:1608
Addressables.InitializationOperation[Obsolete] in 1.22.3, removed in 2.9.1await Addressables.InitializeAsync()Addressables.cs:1.22.3:981-982
LoadResourceLocationsAsync(IList<object> keys, ...)Present in 1.22.3, removed in 2.9.1LoadResourceLocationsAsync(IEnumerable keys, ...)Addressables.cs:2.9.1:1148
GetDownloadSizeAsync(IList<object> keys)Present in 1.22.3, removed in 2.9.1GetDownloadSizeAsync(IEnumerable keys)Addressables.cs:2.9.1:1566
DownloadDependenciesAsync(IList<object> keys, mode, ...)Present in 1.22.3, removed in 2.9.1DownloadDependenciesAsync(IEnumerable keys, mode, ...)Addressables.cs:2.9.1:1636
LegacyResourcesLocator / LegacyResourcesProviderPresent in 1.22.3, removed in 2.9.1Use Addressables groups for all assetsRuntime/ResourceLocators/LegacyResourcesLocator.cs:1.22.3
ResourceManager.RegisterDiagnosticCallback(...)[Obsolete] in 1.22.3, removed in 2.9.1Addressables Profiler windowResourceManager.cs:1.22.3:353
DiagnosticEvent / DiagnosticEventCollectorPresent in 1.22.3, removed in 2.9.1Addressables Profiler / custom IProfilerEmitterRuntime/ResourceManager/Diagnostics/:1.22.3

When in doubt, read the cited source — not your memory.

相似的 Skill

claude-handoff

MAmattpocock/skills288k近 7 天新增 10,178 个 star

agent-payment-x402

AFaffaan-m/ECC278k近 7 天新增 4,046 个 star

agent-self-evaluation

AFaffaan-m/ECC278k近 7 天新增 4,046 个 star

bengali-nlp

AFaffaan-m/ECC278k近 7 天新增 4,046 个 star

ponytail-gain

DIDietrichGebert/ponytail162k近 7 天新增 5,405 个 star

ponytail-debt

DIDietrichGebert/ponytail162k近 7 天新增 5,405 个 star