コード例 #1
0
        private IEnumerator FadeOutCoroutine()
        {
            var   bloom           = GameObject.FindObjectOfType <BloomOptimized>();
            float targetIntensity = 2.3f;
            float targetThreshold = 0.4f;

            var  musicController = GameObject.FindObjectOfType <MusicController>();
            bool tweenMusic      = musicController != null && musicController.gameplay != null;

            var   wait           = new WaitForEndOfFrame();
            float tween          = 1f;
            float tweenSpeed     = 0.5f;
            float startTime      = Time.realtimeSinceStartup;
            float lastTime       = startTime;
            float deltaTime      = 0;
            float fixedDeltaTime = Time.fixedDeltaTime;

            while (tween > 0.1)
            {
                deltaTime = Time.realtimeSinceStartup - lastTime;
                lastTime  = Time.realtimeSinceStartup;

                if (bloom != null)
                {
                    bloom.intensity = Mathf.Lerp(bloom.intensity, targetIntensity, tweenSpeed * deltaTime);
                    bloom.threshold = Mathf.Lerp(bloom.threshold, targetThreshold, tweenSpeed * deltaTime);
                }

                if (tweenMusic)
                {
                    musicController.gameplay.volume = Mathf.Lerp(musicController.gameplay.volume,
                                                                 0f, tweenSpeed * deltaTime);
                }

                // Slow down.
                Time.timeScale      = Mathf.Lerp(Time.timeScale, 0f, tweenSpeed * deltaTime);
                Time.fixedDeltaTime = fixedDeltaTime * Time.timeScale;

                tween = Mathf.Lerp(tween, 0f, tweenSpeed * deltaTime);

                yield return(wait);
            }

            // Speed up again.
            Time.timeScale      = 1f;
            Time.fixedDeltaTime = fixedDeltaTime;

            SetLevelFinished(true);
            ridParents.GetRidParents();
            gameController.DisActiveButtonOnOver();
            //gameController.SetActiveButtonOnOver();
            //levelCompletedMenu.SetActive(true);
            // Register level complete.

            //LevelCompleted();
        }