using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Reflection;
public class UIManager {
private static Dictionary<string, KeyValuePair<GameObject, UIBase>> dic
= new Dictionary<string, KeyValuePair<GameObject, UIBase>>();
private static GameObject InstantiatePanel(string prefabId)
{
GameObject prefab = ResourcesManager.Instance.GetUIPrefab(prefabId);
if (prefab == null)
{
Debug.LogError("prefab is null ," + prefabId);
return null;
}
GameObject UIPrefab = GameObject.Instantiate(prefab) as GameObject;
UIPrefab.name = prefabId;
Transform canvas = GameObject.FindGameObjectWithTag("Canvas").transform;
if (canvas == null)
{
Debug.LogError("Canvas is not find");
return null;
}
UIPrefab.transform.SetParent(canvas, false);
return UIPrefab;
}
public static void ShowPanel(string name)
{
GameObject panel = null;
UIBase uibase = null;
KeyValuePair<GameObject, UIBase> found;
if (!dic.TryGetValue(name, out found))
{
panel = InstantiatePanel(name);
uibase = Assembly.GetExecutingAssembly().CreateInstance(name) as UIBase;
if (panel == null)
{
return;
}
if (uibase == null)
{
return;
}
uibase.Init(panel);
dic.Add(name, new KeyValuePair<GameObject, UIBase>(panel, uibase));
}
else
{
panel = found.Key;
uibase = found.Value;
}
if (panel == null || uibase == null) return;
panel.SetActive(true);
uibase.Enter();
}
public static void HidePanel(string name)
{
KeyValuePair<GameObject, UIBase> pair;
if (!dic.TryGetValue(name, out pair))
{
return;
}
pair.Key.SetActive(false);
pair.Value.Exit();
}
public static void DestroyAllPanel()
{
}
}
UIManager
最新推荐文章于 2024-01-06 22:00:38 发布