diff --git a/ProjectNLD/Assets/Code/Scripts/Framework/UI/UIManager.cs b/ProjectNLD/Assets/Code/Scripts/Framework/UI/UIManager.cs index 30eff0930d5..bf1c2bb7bf0 100644 --- a/ProjectNLD/Assets/Code/Scripts/Framework/UI/UIManager.cs +++ b/ProjectNLD/Assets/Code/Scripts/Framework/UI/UIManager.cs @@ -373,15 +373,15 @@ public partial class UIManager : Singlenton, IInitable, IUpdatable return window; } - + //展示全部已加载的NormalUI - public void OpenLoadedNormalUI(string uiName) + public void OpenLoadedNormalUI(string uiName, object data = null) { WindowInfo wInfo; wInfo = _windowsInfo[uiName]; - if (mMemoryWindows.ContainsKey(uiName)) + if (mMemoryWindows.ContainsKey(uiName)) { - mMemoryWindows[uiName].CreateWindow(null, wInfo.NotSetMainCamera); + mMemoryWindows[uiName].CreateWindow(data, wInfo.NotSetMainCamera); } } diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_CultivateController.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_CultivateController.cs index 00391717161..ba3088ddd2e 100644 --- a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_CultivateController.cs +++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_CultivateController.cs @@ -118,11 +118,25 @@ public class UI_CultivateController : UIWindow } public enum UILeftCharanterUIType { + /// + /// 角色基础属性 + /// EbaseAttri, + /// + /// 角色详细属性 + /// EDetailInfo, } + public override async void PreLoad(object data = null) + { + base.PreLoad(data); + #region 子UI预加载 + proAndInfoWindow = await UIManager.Instance.LoadWindow(UINameConst.UI_Cultivate_ProAndInfo) as UI_Cultivate_ProAndInfoController; + detailWindow = await UIManager.Instance.LoadWindow(UINameConst.UI_Cultivate_Detail) as UI_Cultivate_DetailController; + #endregion + } public override void OnInit() { @@ -297,7 +311,7 @@ public class UI_CultivateController : UIWindow Image_RankLevelObj.SetActive(false); UI_Cultivate_ActSkObj.SetActive(false); FindObj("Image_BG/Image_NameInfo").SetActive(false); - + await UniTask.Delay(1000); await WaitTimeForFx(); //StartCoroutine(_coroutine); @@ -305,8 +319,7 @@ public class UI_CultivateController : UIWindow private async UniTask WaitTimeForFx() { - await UniTask.Delay(1000); - if (!gameObject) + if (!IsShow()) { return; } @@ -333,10 +346,15 @@ public class UI_CultivateController : UIWindow Button_Look.gameObject.SetActive(true); Button_ChangeSuit.gameObject.SetActive(true); - while (animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f) + while (animator != null && animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f) { await UniTask.Yield(); } + if (animator == null) + { + DebugUtil.LogWarning("animator is null! 可能是由于动画未完成提前关闭了界面导致"); + return; + } EventManager.Instance.Send(EventManager.EventName.UIOpenAndAnim, WindowName); } @@ -371,10 +389,8 @@ public class UI_CultivateController : UIWindow //{ // return fingerUpPosition.x - fingerDownPosition.x > 50f; // 调整阈值以适应您的需求 //} - private async void OnButton_BackClick() + private void OnButton_BackClick() { - CloseCurOpenChildUI(); - //UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate); CloseWindow(); // UIWindow uIWindow= UIManager.Instance.PopWindow(); @@ -385,9 +401,14 @@ public class UI_CultivateController : UIWindow { UIManager.Instance.CloseAllNormalExcept(UINameConst.UI_MainPanel); } - void CloseCurOpenChildUI() + /// + /// 关闭预加载的子UI + /// + void ClosePreloadChildUI() { - CloseLeftCurChildUI(); + //CloseLeftCurChildUI(); + UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_ProAndInfo); + UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_Detail); } private void RegisterEvent() { @@ -510,7 +531,11 @@ public class UI_CultivateController : UIWindow public override void OnRelease() { base.OnRelease(); - + + #region 释放预加载 + ClosePreloadChildUI(); + #endregion + UnRegisterEvent(); } @@ -1081,15 +1106,18 @@ public class UI_CultivateController : UIWindow } - async void OpenLeftChildUI(UILeftCharanterUIType uIChracterType) + void OpenLeftChildUI(UILeftCharanterUIType uIChracterType)//async { switch (uIChracterType) { case UILeftCharanterUIType.EbaseAttri: - proAndInfoWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Cultivate_ProAndInfo, mCurCharaData) as UI_Cultivate_ProAndInfoController; + UIManager.Instance.OpenLoadedNormalUI(UINameConst.UI_Cultivate_ProAndInfo, mCurCharaData); + //proAndInfoWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Cultivate_ProAndInfo, mCurCharaData) as UI_Cultivate_ProAndInfoController; break; case UILeftCharanterUIType.EDetailInfo: - detailWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Cultivate_Detail, mCurCharaData) as UI_Cultivate_DetailController; + UIManager.Instance.OpenLoadedNormalUI(UINameConst.UI_Cultivate_Detail, mCurCharaData); + // + //detailWindow = await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_Cultivate_Detail, mCurCharaData) as UI_Cultivate_DetailController; break; default: @@ -1104,10 +1132,12 @@ public class UI_CultivateController : UIWindow switch (mCurLeftUICharacterType) { case UILeftCharanterUIType.EbaseAttri: - UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_ProAndInfo); + proAndInfoWindow.Hide(); + //UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_ProAndInfo); break; case UILeftCharanterUIType.EDetailInfo: - UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_Detail); + detailWindow.Hide(); + //UIManager.Instance.CloseWindow(UINameConst.UI_Cultivate_Detail); break; diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_DetailController.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_DetailController.cs index 3e57c18cd44..ec3fba37e8b 100644 --- a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_DetailController.cs +++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_DetailController.cs @@ -167,6 +167,14 @@ public class UI_Cultivate_DetailController : UIWindow RefreshInfos(); } + /// + /// 隐藏Window + /// + public void Hide() + { + UIManager.Instance.Hide(WindowName); + } + private void UnRegisterEvent() { EventManager.Instance.Unregister(EventManager.EventName.EN_CharacterLevelUp, (Action)OnCharacterLevelup); diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_ProAndInfoController.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_ProAndInfoController.cs index 8ba393fdb55..2a6dcf1c2a5 100644 --- a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_ProAndInfoController.cs +++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/UI_Cultivate_ProAndInfoController.cs @@ -238,6 +238,14 @@ public class UI_Cultivate_ProAndInfoController : UIWindow EventManager.Instance.Send(EventManager.EventName.EN_ShowAllCharacterFavorableUI); } + + /// + /// 隐藏Window + /// + public void Hide() + { + UIManager.Instance.Hide(WindowName); + } //invoke when open window diff --git a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_StartGameInterfaceController.cs b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_StartGameInterfaceController.cs index 58c3042bb3b..a429022adb1 100644 --- a/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_StartGameInterfaceController.cs +++ b/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_StartGameInterfaceController.cs @@ -418,7 +418,7 @@ public class UI_StartGameInterfaceController : UIWindow #else //使用账号登录界面 curShownWindow = debugLoginWindow; - if (Debug.isDebugBuild) + if (Debug.isDebugBuild)//测试环境 { if (loginSaveData.LoginByPhone) { @@ -428,7 +428,7 @@ public class UI_StartGameInterfaceController : UIWindow { SetLoginType(LoginType.Account); } - if (loginSaveData.LoginByAccount && loginSaveData.rememberPassword && LoginController.Instance.AutoLogin) + if (loginSaveData.LoginByAccount && loginSaveData.rememberPassword && LoginController.Instance.AutoLogin)//保存有数据且为初次登录时尝试自动登录 { DebugUtil.Log("已有账号密码,自动登录"); LoginAction();