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",