Skip to content

Supported call sites ​

Layer 1 instruments these Addressables patterns automatically. No manual HandleTracker calls required.

Static Addressables API ​

APILoadRelease
Addressables.LoadAssetAsync<T>(…)yes—
Addressables.InstantiateAsync(…)yes (all overloads)—
Addressables.LoadAssetsAsync<T>(…)yes (all overloads)—
Addressables.LoadSceneAsync(…)yes—
Addressables.Release(AsyncOperationHandle)—yes
Addressables.Release<T>(AsyncOperationHandle<T>)—yes
Addressables.ReleaseInstance(…)—yes
Addressables.UnloadSceneAsync(AsyncOperationHandle<SceneInstance>)—yes

AssetReference API ​

APILoadRelease
AssetReference.LoadAssetAsync<T>()yes—
AssetReference.InstantiateAsync(…)yes—
AssetReference.LoadSceneAsync(…)yes—
AssetReference.ReleaseAsset()—yes (via OperationHandle)
AssetReference.UnLoadScene()—yes (via OperationHandle)

Not instrumented ​

APIWorkaround
AssetReference.ReleaseInstance(GameObject)Use static Addressables.ReleaseInstance
Addressables.UnloadSceneAsync(SceneInstance)Use AsyncOperationHandle<SceneInstance> overload

Injection timing ​

  • Load — injected after the load call stores the handle (stloc + ldloc; never Dup immediately after call).
  • Release — injected before the release call, duplicating the handle on stack after optional default arguments are pushed.

Excluded assemblies ​

Assemblies in the exclude list (see Assembly exclude list) are not rewritten.

Package-internal assemblies (AddressablesLeakDetector.*) are not instrumented — only your gameplay code.

See also ​

Addressables Leak Detector — Unity Editor documentation