コード例 #1
0
 public void StartTransaction(Model.GameScenes nextScene, Model.GameScenes[] additiveLoadScenes)
 {
     if (isRunning)
     {
         return;
     }
     TransitionReset();
     StartCoroutine(TransitionCoroutine(nextScene, additiveLoadScenes));
 }
コード例 #2
0
        private IEnumerator TransitionCoroutine(Model.GameScenes nextScene, Model.GameScenes[] additiveLoadScenes)
        {
            isRunning = true;
            UI.FadeImage.raycastTarget = true;

            //蓋絵で画面を隠す
            isFading = true;
            UI.Fade.FadeIn(1f, () => isFading = false);

            //トランジションアニメーションが終了するのを待つ
            while (isFading)
            {
                yield return(null);
            }

            //メインとなるシーンを読み込む
            var main = SceneManager.LoadSceneAsync(nextScene.ToString());

            //追加シーンがある場合は一緒に読み込む
            if (additiveLoadScenes != null)
            {
                foreach (var item in additiveLoadScenes)
                {
                    SceneManager.LoadSceneAsync(item.ToString(), LoadSceneMode.Additive);
                }
            }

            Resources.UnloadUnusedAssets();
            GC.Collect();
            yield return(null);

            //現在シーンを設定
            currentGameScene = nextScene;

            while (!isSwichedScene)
            {
                yield return(null);
            }

            //蓋絵を開くアニメーションを開始
            isFading = true;
            UI.Fade.FadeOut(1f, () => isFading = false);

            //蓋絵が開き切るのを待つ
            while (isFading)
            {
                yield return(null);
            }
            TransitionReset();
        }
コード例 #3
0
        protected override void Awake()
        {
            //このオブジェクトが消えないようにする
            DontDestroyOnLoad(gameObject);

            try
            {
                //現在のシーンを取得する
                currentGameScene = (Model.GameScenes)Enum.Parse(typeof(Model.GameScenes), SceneManager.GetActiveScene().name, false);
            }
            catch
            {
                currentGameScene = Model.GameScenes.title;
            }
            //アクティブなシーンが切り替わったことに実行するメソッド登録
            SceneManager.activeSceneChanged += OnActiveSceneChanged;
        }
コード例 #4
0
 public static void LoadScene(Model.GameScenes scene, Model.GameScenes[] additiveLoadScenes = null)
 {
     TransitionManager.StartTransaction(scene, additiveLoadScenes);
 }