diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIModule.cs b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIModule.cs index 530c7525..626d1854 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIModule.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIModule.cs @@ -382,12 +382,18 @@ namespace TEngine CloseUI(type); return; } - + window.Visible = false; + window.IsHide = true; window.HideTimerId = GameModule.Timer.AddTimer((arg) => { CloseUI(type); },window.HideTimeToClose); + + if (window.FullScreen) + { + OnSetWindowVisible(); + } } /// @@ -469,6 +475,10 @@ namespace TEngine UIWindow window = _stack[i]; if (isHideNext == false) { + if (window.IsHide) + { + continue; + } window.Visible = true; if (window.IsPrepare && window.FullScreen) { diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs index 71ab89d0..c8068b0c 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs @@ -18,10 +18,14 @@ namespace TEngine private GameObject _panel; private Canvas _canvas; + + protected Canvas Canvas => _canvas; private Canvas[] _childCanvas; private GraphicRaycaster _raycaster; + + protected GraphicRaycaster GraphicRaycaster => _raycaster; private GraphicRaycaster[] _childRaycaster; @@ -204,6 +208,11 @@ namespace TEngine internal bool IsLoadDone = false; internal bool IsDestroyed = false; + + /// + /// UI是否隐藏标志位。 + /// + public bool IsHide { internal set; get; } = false; #endregion public void Init(string name, int layer, bool fullScreen, string assetName, bool fromResources, int hideTimeToClose) @@ -218,6 +227,7 @@ namespace TEngine internal void TryInvoke(System.Action prepareCallback, System.Object[] userDatas) { + CancelHideToCloseTimer(); base.userDatas = userDatas; if (IsPrepare) { @@ -227,7 +237,6 @@ namespace TEngine { _prepareCallback = prepareCallback; } - CancelHideToCloseTimer(); } internal async UniTaskVoid InternalLoad(string location, Action prepareCallback, bool isAsync, System.Object[] userDatas) @@ -437,6 +446,7 @@ namespace TEngine internal void CancelHideToCloseTimer() { + IsHide = false; if (HideTimerId > 0) { GameModule.Timer.RemoveTimer(HideTimerId);