I’m testing the SceneReleaseMode.OnlyReleaseSceneOnHandleRelease parameter in Addressables.LoadSceneAsync, and I encountered what seems to be an inconsistency or unexpected behavior.
I tested both unloading via the mainMenuHandle and via mainMenuHandle.Result (SceneInstance), and the result is the same — the handle becomes invalid.
private AsyncOperationHandle<SceneInstance> mainMenuHandle;
private void Test()
{
mainMenuHandle = Addressables.LoadSceneAsync("MainMenu", releaseMode: SceneReleaseMode.OnlyReleaseSceneOnHandleRelease);
mainMenuHandle.Completed += go1 =>
{
Debug.Log($"MainMenu loaded. Handle valid? {mainMenuHandle.IsValid()}");
var emptySceneHandle = Addressables.LoadSceneAsync("Empty", LoadSceneMode.Additive, SceneReleaseMode.OnlyReleaseSceneOnHandleRelease);
emptySceneHandle.Completed += go2 =>
{
Debug.Log($"Empty scene loaded. MainMenu handle valid? {mainMenuHandle.IsValid()}");
emptySceneHandle.Result.ActivateAsync().completed += go3 =>
{
Debug.Log($"Empty activated. MainMenu handle valid? {mainMenuHandle.IsValid()}");
var unloadHandle = Addressables.UnloadSceneAsync(mainMenuHandle.Result, autoReleaseHandle: false);
unloadHandle.Completed += go4 =>
{
Debug.Log($"MainMenu unloaded. MainMenu handle valid? {mainMenuHandle.IsValid()}");
};
};
};
};
}
