Unity框架学习 《九》——GUIManager

mac2025-10-24  6

GUIManager

using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace QFramework { public class GUIManager : MonoBehaviour { #region UIRoot单例对象 private static GameObject mPrivateUIRoot; public static GameObject UIRoot { get { if (mPrivateUIRoot == null) { GameObject uiRootPrefab = Resources.Load<GameObject>("UIRoot"); mPrivateUIRoot = GameObject.Instantiate(uiRootPrefab); mPrivateUIRoot.name = "UIRoot"; } return mPrivateUIRoot; } } #endregion /// <summary> /// 设置分辨率 /// </summary> public static void SetResolution(float width,float height,float matchWidthOrHeight) { CanvasScaler scaler = UIRoot.GetComponent<CanvasScaler>(); scaler.referenceResolution = new Vector2(width, height); scaler.matchWidthOrHeight = matchWidthOrHeight; } /// <summary> /// 用字典存储已经加载的Pannel,方便卸载 /// </summary> private static Dictionary<string, GameObject> mPanelDic = new Dictionary<string, GameObject>(); public static GameObject LoadPanel(string PanelName,UILayer layer) { GameObject panel = null; GameObject pannelPrefab = Resources.Load<GameObject>(PanelName); panel = Instantiate(pannelPrefab); if (panel) { panel.name = PanelName; mPanelDic.Add(panel.name, panel); switch (layer) { case UILayer.Bg: panel.transform.SetParent(UIRoot.transform.Find("Bg")); break; case UILayer.Common: panel.transform.SetParent(UIRoot.transform.Find("Common")); break; case UILayer.Top: panel.transform.SetParent(UIRoot.transform.Find("Top")); break; } RectTransform panelRectTrans = panel.transform as RectTransform; panelRectTrans.offsetMax = Vector2.zero; panelRectTrans.offsetMin = Vector2.zero; panelRectTrans.anchoredPosition3D = Vector3.zero; panelRectTrans.anchorMin = Vector3.zero; panelRectTrans.anchorMax = Vector2.one; } return panel; } public static void UnLoadPanel(string panelName) { if (mPanelDic.ContainsKey(panelName)) { Destroy(mPanelDic[panelName]); } } } public enum UILayer { Bg, Common, Top } }
最新回复(0)