//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, March 20, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RealmTransitionWin : Window { [SerializeField] UIAlphaTween m_AlphaTween; [SerializeField] Transform m_ContainerProgress; [SerializeField] Image m_Progress; [SerializeField, Header("进度时长"), Range(0.1f, 5f)] float m_Duration = 0.8f; float timer = 0f; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { timer = 0f; m_Progress.fillAmount = 0f; m_ContainerProgress.SetActive(true); m_AlphaTween.SetStartState(); WindowCenter.Instance.windowBeforeOpenEvent += WindowBeforeOpenEvent; } protected override void OnActived() { base.OnActived(); if (!CameraController.Instance.IsPlayingAnim) { CameraController.Instance.PlayAnimationClipUnLimit("RealmFuncOpen"); } m_AlphaTween.Play(OnTweenComplete); } protected override void OnAfterOpen() { } protected override void OnPreClose() { WindowCenter.Instance.windowBeforeOpenEvent -= WindowBeforeOpenEvent; } protected override void OnAfterClose() { } protected override void LateUpdate() { base.LateUpdate(); if (m_Progress.fillAmount <= 1f) { var progress = Mathf.Clamp01(timer / m_Duration); m_Progress.fillAmount = progress; } timer += Time.deltaTime; } #endregion private void WindowBeforeOpenEvent(Window window) { if (window is RealmWin) { m_AlphaTween.Play(OnTweenBackComplete); m_AlphaTween.SetEndState(); m_AlphaTween.reversal = true; } } private void OnTweenBackComplete() { CloseImmediately(); } private void OnTweenComplete() { m_ContainerProgress.SetActive(false); WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); } } }