public void ChangeScene(string sceneName, bool isLoadAsync) { CurrentSceneName = sceneName; IsLoadedScene = false; if (isLoadAsync) { _uIManager.DrawPopup <LoadingPopup>(setMainPriority: true); SceneManager.LoadSceneAsync(sceneName) // загружаем асинхронно сцену .AsAsyncOperationObservable() // превращаем его в Observable поток .Do(x => { // вызывается при выполнении процесса float progress = Mathf.Clamp01(x.progress / 0.9f); DebugLogger.Log(null, "Loading progress = " + progress, LogColor.Aqua); OnSceneLoading(progress); }).Subscribe(_ => { // подписываемся Observable.Timer(System.TimeSpan.FromSeconds(0.5f)).Subscribe(p => { OnSceneFinishedLoading(); }); }); } else { SceneManager.LoadScene(sceneName); OnSceneFinishedLoading(); } }
private void ShopBtnClick() { _uiManager.DrawPopup <ShopPopup>(setMainPriority: true); }