WaiXie_QuestionSystem/Assets/Script/UI/UIManager.cs

104 lines
2.6 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace Script.UI
{
public class UIManager : SingleManager<UIManager>
{
private Dictionary<PanelType, PanelBase> _panelBases;
public UIManager()
{
_panelBases = new Dictionary<PanelType, PanelBase>();
}
// public void AddPanel(PanelBase panelBase)
// {
// Debug.Log($"add {panelBase.panelType}");
// if (!_panelBases.ContainsKey(panelBase.panelType))
// {
// _panelBases.Add(panelBase.panelType, panelBase);
// }
// }
public void InitPanel(List<PanelBase> list)
{
_panelBases = new Dictionary<PanelType, PanelBase>();
foreach (var panelBase in list)
{
_panelBases.Add(panelBase.panelType, panelBase);
// Debug.Log($"add {panelBase.panelType}");
}
}
public PanelBase OpenPanel(PanelType panelType)
{
if (_panelBases.TryGetValue(panelType, out var panelBase))
{
panelBase.Open();
return panelBase;
}
return null;
}
public T OpenPanel<T>(PanelType panelType) where T : PanelBase
{
T t = null;
if (_panelBases.TryGetValue(panelType, out var panelBase))
{
t = panelBase as T;
t.Open();
return t;
}
return null;
}
public PanelBase GetPanel(PanelType panelType)
{
if (_panelBases.TryGetValue(panelType, out var panelBase))
{
return panelBase;
}
return null;
}
public T GetPanel<T>(PanelType panelType) where T : PanelBase
{
T t = null;
if (_panelBases.TryGetValue(panelType, out var panelBase))
{
t = panelBase as T;
return t;
}
return null;
}
public PanelBase ClosePanel(PanelType panelType)
{
if (_panelBases.TryGetValue(panelType, out var panelBase))
{
panelBase.Close();
return panelBase;
}
return null;
}
public T ClosePanel<T>(PanelType panelType) where T : PanelBase
{
T t = null;
if (_panelBases.TryGetValue(panelType, out var panelBase))
{
t = panelBase as T;
t.Close();
return t;
}
return null;
}
}
}