From bdb737230b30e8fb9be63d95b792e8c8ba531ea0 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 23 Apr 2022 13:24:05 +0800 Subject: * ui staff --- SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs | 37 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) (limited to 'SurvivalTest/Assets/Scripts/UI/UIManager_Panels.cs') 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 { private Dictionary m_Panels = new Dictionary(); + private Dictionary m_OpenedPanels = new Dictionary(); + + private Canvas m_Canvas; + + public void SetRootCanvas(Canvas canvas) + { + m_Canvas = canvas; + } void SetPanels() { @@ -25,9 +34,27 @@ public partial class UIManager : Singleton 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(m_Panels[type]); + if (prefab == null) + { + Debug.LogError("UI Prefab in not available, path=" + m_Panels[type]); + return null; + } + PanelBase panel = UnityEngine.Object.Instantiate(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 -- cgit v1.1-26-g67d0