diff options
Diffstat (limited to 'SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs')
-rw-r--r-- | SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs b/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs index 049f733..d29c24a 100644 --- a/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs +++ b/SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs @@ -1,18 +1,27 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.UI; public enum PanelType { - None, + None, - PanelLevelBar, + PanelLevelBar, PanelItemBar, } public partial class UIManager : Singleton<UIManager> { private Dictionary<PanelType, string> m_Panels = new Dictionary<PanelType, string>(); + private Dictionary<PanelType, PanelBase> m_OpenedPanels = new Dictionary<PanelType, PanelBase>(); + + private Canvas m_Canvas; + + public void SetRootCanvas(Canvas canvas) + { + m_Canvas = canvas; + } void SetPanels() { @@ -25,9 +34,27 @@ public partial class UIManager : Singleton<UIManager> m_Panels.Add(type, "prefabs/ui/" + path); } - void OpenPanel(PanelType type, object param) + public PanelBase OpenPanel(PanelType type, object param = null) { - + if(m_OpenedPanels.ContainsKey(type)) + { + return m_OpenedPanels[type]; + } + + PanelBase prefab = ResourceManager.Instance.Load<PanelBase>(m_Panels[type]); + if (prefab == null) + { + Debug.LogError("UI Prefab in not available, path=" + m_Panels[type]); + return null; + } + PanelBase panel = UnityEngine.Object.Instantiate<PanelBase>(prefab); + panel.name = prefab.name; + panel.transform.SetParent(m_Canvas.transform); + panel.Set(param); + panel.InitRectTransform(); + panel.gameObject.SetActive(true); + + return panel; } -} +}
\ No newline at end of file |