UIManager

来源:互联网 发布:京麦工作台和淘宝助理 编辑:程序博客网 时间:2024/05/22 04:33
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()    {    }    }

0 0
原创粉丝点击