You are assigning the asyncOperation when the operation completes, not when it's started. I'm guessing you're trying to unload it while it's still loading, so the variable is invalid during that time. As an aside, it helps if you can paste code on the forums instead of a screenshot of code. [EDIT] Looking more at your code, I see no reason why it shouldn't work, assuming the handle that's passed into Completed is a valid handle. Try assigning the handle when you start the operation instead of when complete and see if that helps. I think you should file a bug report for this issue if you're using the latest version.
[FIXED] I have to save the result, not the async operation. Code (CSharp): public class MenuAdditiveSceneLoader : MonoBehaviour { [Title("Settings")] [SerializeField] private MenuAdditiveSceneLoaderSettings settings; [Title("References")] [SerializeField] private OnlineGameMode onlineGameMode; private SceneInstance registrationSceneInstance; //previous: private AsyncOperationHandle<SceneInstance> registrationSceneInstance; private Registration registration; public event Action OnRegistrationSceneLoaded; public event Action OnRegistrationSceneUnloaded; private void OnEnable() { onlineGameMode.OnAccountNotFound += LoadRegistrationScene; } private void OnDisable() { onlineGameMode.OnAccountNotFound -= LoadRegistrationScene; } private void LoadRegistrationScene() { Addressables.LoadSceneAsync(settings.RegistrationSceneName, LoadSceneMode.Additive).Completed += OnRegistrationSceneLoadingDone; } private void UnLoadRegistrationScene() { registration.OnRegistrationEnded -= UnLoadRegistrationScene; Addressables.UnloadSceneAsync(registrationSceneInstance).Completed += OnRgistrationSceneUnloadingDone; } private void OnRegistrationSceneLoadingDone(AsyncOperationHandle<SceneInstance> asyncOperation) { registration = FindObjectOfType<Registration>(); registration.OnRegistrationEnded += UnLoadRegistrationScene; registrationSceneInstance = asyncOperation.Result; //previous: registrationSceneInstance = asyncOperation; OnRegistrationSceneLoaded?.Invoke(); } private void OnRgistrationSceneUnloadingDone(AsyncOperationHandle<SceneInstance> asyncOperation) { OnRegistrationSceneUnloaded?.Invoke(); } }