private void SyncNext() { if (_scenesToSync.Count == 0) { _syncingAttribute = null; Resources.UnloadUnusedAssets(); DispatchSceneLoadedSignal(); return; } _syncingAttribute = _scenesToSync.Dequeue(); if ((_syncingAttribute.Relationship & SceneRelationshipType.Exclude) != 0) { UnloadSceneSignal.Dispatch(_syncingAttribute.SceneType); SyncNext(); } else if ((_syncingAttribute.Relationship & SceneRelationshipType.Include) != 0) { LoadSceneSignal.Dispatch(_syncingAttribute.SceneType); } else { SyncNext(); } }
protected override void MapBindings() { Rapid.Bind <LoadSceneSignal>(); Rapid.Bind <UnloadSceneSignal>(); Rapid.Bind <SceneLoadedSignal>(); Rapid.Bind <SceneUnloadedSignal>(); LoadSceneSignal.AddCommand <LoadSceneCommand>(); UnloadSceneSignal.AddCommand <UnloadSceneCommand>(); }
protected override void UnmapBindings() { LoadSceneSignal.RemoveCommand <LoadSceneCommand>(); UnloadSceneSignal.RemoveCommand <UnloadSceneCommand>(); Rapid.Unbind <LoadSceneSignal>(); Rapid.Unbind <UnloadSceneSignal>(); Rapid.Unbind <SceneLoadedSignal>(); Rapid.Unbind <SceneUnloadedSignal>(); }
public void Execute(UnloadSceneSignal loadParams) { _sceneLoader.UnloadScene(loadParams.Scene).Done( () => { loadParams.OnComplete?.Resolve(); }, exception => { loadParams.OnComplete?.Reject(exception); } ); }
protected override void OnDestroy() { var atts = GetType().GetAttributes <SceneRelationshipAttribute>(false); foreach (var att in atts) { if ((att.Relationship & SceneRelationshipType.Depend) != 0) { UnloadSceneSignal.Dispatch(att.SceneType); } } UnmapBindings(); Resources.UnloadUnusedAssets(); SceneUnloadedSignal.Dispatch(GetType()); base.OnDestroy(); }
private void OnBackButtonClicked() { UnloadSceneSignal.Unload(SignalBus, Scenes.GamePlay) .Done((() => _bootstrapModel.LoadingProgress.Value = BootstrapModel.ELoadingProgress.MainHub)); }