コード例 #1
0
        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();
            }
        }
コード例 #2
0
ファイル: MenuPage.cs プロジェクト: saerex1989/ECSTestGame
 private void ShopBtnClick()
 {
     _uiManager.DrawPopup <ShopPopup>(setMainPriority: true);
 }