using Cysharp.Threading.Tasks; using UnityEngine; using Framework; using PhxhSDK; public class ShowTransitionMgr: Singlenton { private UI_TransitionController _curUIWindow; private bool _isInTransition; private bool _isField; public bool IsField => _isField; private async UniTask _OpenUITransition(UI_TransitionController.ShowType showType) { _curUIWindow = await UI_TransitionController.Open(showType) as UI_TransitionController; } private void _CloseUITransition() { if (_curUIWindow != null) { _curUIWindow.CloseWindow(); } } #region #API /// /// 进入过度阶段 /// public async UniTask EnterBlackTransition(bool isField = false) { _isField = isField; await _OpenUITransition(UI_TransitionController.ShowType.BlackOnly); _isInTransition = true; } public async UniTask EnterWhiteTransition(bool isField = false) { _isField = isField; await _OpenUITransition(UI_TransitionController.ShowType.WhiteOnly); _isInTransition = true; } /// /// 退出过度阶段 /// public void ExitTransition() { _CloseUITransition(); _isInTransition = false; } /// /// 进入黑屏状态 /// /// 进入黑屏过程总共消耗时间 public async UniTask EnterBlack(float costTime = 0.5f) { if (!_isInTransition || _curUIWindow == null) { return; } await _curUIWindow.EnterBlack(costTime); } public async UniTask EnterWhite(float costTime = 0.5f) { if (!_isInTransition || _curUIWindow == null) { return; } await _curUIWindow.EnterWhite(costTime); } /// /// 退出黑屏状态 /// /// 退出黑屏过程总共消耗时间 public async UniTask ExitBlack(float costTime = 0.5f) { if (!_isInTransition || _curUIWindow == null) { return; } await _curUIWindow.ExitBlack(costTime); } public async UniTask ExitWhite(float costTime = 0.5f) { if (!_isInTransition || _curUIWindow == null) { return; } await _curUIWindow.ExitWhite(costTime); } public async UniTask ShowLevelTransition(UI_LevelTransitionController.OpenType type) { await UI_LevelTransitionController.Open(type); await UniTask.Delay(1750); UIManager.Instance.CloseWindow(UINameConst.UI_LevelTransition); } #endregion }