From 5b87227361e05cf09c9efccf8df9de7b5b7b713c Mon Sep 17 00:00:00 2001 From: zhangzheng Date: Mon, 15 Dec 2025 11:22:01 +0800 Subject: [PATCH] 111 --- .../Tools/PanelSystem/Base/BaseRenderPanel.cs | 4 +- .../Manager/SpriteRendererSystem.cs | 129 +++++++++++++++--- Assets/00.StaryEvoTools/package.json | 2 +- 3 files changed, 114 insertions(+), 21 deletions(-) diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs index 799bb23..831f516 100644 --- a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs +++ b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Base/BaseRenderPanel.cs @@ -72,12 +72,12 @@ namespace Stary.Evo.UIFarme /// ///所有UI面板的父类,包含UI面板的状态信息 /// - public class BaseRenderPanel : IBaseRenderPanel + public class BaseRenderPanel : IBaseRenderPanel { /// /// UI信息 /// - public string UIName { get; set; } + public virtual string UIName { get; set; } //public abstract UITweenType TweenType { get; } diff --git a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Manager/SpriteRendererSystem.cs b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Manager/SpriteRendererSystem.cs index baff956..6ca8c97 100644 --- a/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Manager/SpriteRendererSystem.cs +++ b/Assets/00.StaryEvoTools/Runtime/Tools/PanelSystem/Manager/SpriteRendererSystem.cs @@ -10,9 +10,13 @@ namespace Stary.Evo.UIFarme /// /// UI的入栈操作,此操作会显示一个面板 /// - Task PushQueue(string packageName, string prefabName, Transform parent = null) + Task PushQueue(string prefabName, string packageName = null, Transform parent = null); + + Task PushQueue(string packageName = null, Transform parent = null) where T : IBaseRenderPanel, new(); + Task PushStack(string prefabName, string packageName = null, Transform parent = null); + /// /// UI的入栈操作,此操作会显示一个面板 /// @@ -28,7 +32,7 @@ namespace Stary.Evo.UIFarme /// void PopQueue(string panelName); - + void PopQueue() where T : IBaseRenderPanel, new(); /// /// 面板全部出栈此操作会执行面板的OnExit方法 /// @@ -60,6 +64,7 @@ namespace Stary.Evo.UIFarme public void SendPanelEvent(TEvent key, Tvlue1 value1, Tvlue2 vlue2, Tvlue3 vlue3) where TEvent : IConvertible; + /// /// 返回存储面板实例的字典 /// @@ -103,13 +108,12 @@ namespace Stary.Evo.UIFarme /// /// 非热更模式传null /// - public async Task PushQueue(string packageName, string prefabName, Transform parent = null) - where T : IBaseRenderPanel, new() + public async Task PushQueue(string prefabName, string packageName = null, Transform parent = null) { IBaseRenderPanel nextPanel = null; if (!dicUI.ContainsKey(prefabName)) { - nextPanel = new T(); + nextPanel = new BaseRenderPanel(); nextPanel.UIName = prefabName; await nextPanel.InitializeAsync(this); nextPanel.SetPanelParent(parent); @@ -136,6 +140,46 @@ namespace Stary.Evo.UIFarme //TOOD } + /// + /// UI的入栈操作,此操作会显示一个面板 + /// + /// + /// 非热更模式传null + /// + public async Task PushQueue(string packageName = null, Transform parent = null) + where T : IBaseRenderPanel, new() + { + var prefabName = typeof(T).Name; + + IBaseRenderPanel nextPanel = null; + if (!dicUI.ContainsKey(prefabName)) + { + nextPanel = new T(); + await nextPanel.InitializeAsync(this); + nextPanel.SetPanelParent(parent); + GameObject panelGo = await nextPanel.CreatePanel(packageName, nextPanel.UIName); + ///生成面板后,进行初始化操作 + await nextPanel.InitializeAsync(panelGo); + dicUI.Add(prefabName, nextPanel); + } + else + { + for (int i = 0; i < queuePanel.Count; i++) + { + if (queuePanel[i].GetType().Name == prefabName) + { + return; + } + } + + nextPanel = dicUI[prefabName]; + } + + queuePanel.Add(nextPanel); + nextPanel.OnEnter(); + //TOOD + } + /// /// UI的入栈操作,此操作会显示一个面板 @@ -143,19 +187,12 @@ namespace Stary.Evo.UIFarme /// /// 非热更模式传null /// - public async Task PushStack(Transform parent = null, string packageName = null) - where T : IBaseRenderPanel, new() + public async Task PushStack(string prefabName, string packageName = null, Transform parent = null) { - var prefabName = typeof(T).Name; - if (string.IsNullOrEmpty(prefabName)) - { - prefabName = typeof(T).Name; - } - IBaseRenderPanel nextPanel = null; if (!dicUI.ContainsKey(prefabName)) { - nextPanel = new T(); + nextPanel = new BaseRenderPanel(); nextPanel.UIName = prefabName; await nextPanel.InitializeAsync(this); nextPanel.SetPanelParent(parent); @@ -187,12 +224,57 @@ namespace Stary.Evo.UIFarme nextPanel.OnEnter(); } + /// + /// UI的入栈操作,此操作会显示一个面板 + /// + /// + /// 非热更模式传null + /// + public async Task PushStack(Transform parent = null, string packageName = null) + where T : IBaseRenderPanel, new() + { + var prefabName = typeof(T).Name; + if (string.IsNullOrEmpty(prefabName)) + { + prefabName = typeof(T).Name; + } + + IBaseRenderPanel nextPanel = null; + if (!dicUI.ContainsKey(prefabName)) + { + nextPanel = new T(); + await nextPanel.InitializeAsync(this); + nextPanel.SetPanelParent(parent); + GameObject panelGo = await nextPanel.CreatePanel(packageName, nextPanel.UIName); + ///生成面板后,进行初始化操作 + await nextPanel.InitializeAsync(panelGo); + + dicUI.Add(prefabName, nextPanel); + } + else + { + foreach (var panel in stackPanel) + { + if (panel.GetType().Name == prefabName) + { + return; + } + } + + nextPanel = dicUI[prefabName]; + } + + if (stackPanel.Count > 0) + { + stackPanel.Peek().OnExit(); + } + + stackPanel.Push(nextPanel); + nextPanel.OnEnter(); + } public void PopQueue(string panelName) { - - - for (int i = 0; i < queuePanel.Count; i++) { if (queuePanel[i].GetType().Name == panelName) @@ -202,7 +284,17 @@ namespace Stary.Evo.UIFarme } } } - + public void PopQueue() where T : IBaseRenderPanel, new() + { + for (int i = 0; i < queuePanel.Count; i++) + { + if (queuePanel[i].GetType().Name == typeof(T).Name) + { + queuePanel[i].OnExit(); + queuePanel.RemoveAt(i); + } + } + } public void PopStack() { if (stackPanel.Count > 0) @@ -266,6 +358,7 @@ namespace Stary.Evo.UIFarme { this.SendEvent(key, value1, vlue2, vlue3); } + public Dictionary Get_Dic() { if (dicUI.Count > 0) diff --git a/Assets/00.StaryEvoTools/package.json b/Assets/00.StaryEvoTools/package.json index 1049ab0..7a60d17 100644 --- a/Assets/00.StaryEvoTools/package.json +++ b/Assets/00.StaryEvoTools/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.tools", - "version": "1.2.8", + "version": "1.2.9", "displayName": "00.StaryEvo.Tools", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",