| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class PinBallUIManager : MonoBehaviour
- {
- //UI管理
- private Dictionary<string, PinBallUIBase> m_dicUI = new Dictionary<string, PinBallUIBase>();
- private static PinBallUIManager _instance;
- //单利
- public static PinBallUIManager instance
- {
- get {
- if (_instance == null)
- {
- GameObject goR = Resources.Load<GameObject>("Prefabs/PinBallUIManager");
- GameObject uiPanel = Instantiate(goR);
- _instance = uiPanel.AddComponent<PinBallUIManager>();
-
- }
- return _instance;
- }
- }
- public Transform BG;
- public Transform Content;
- public Transform Pop;
- private void Init()
- {
-
- }
- private void Awake()
- {
- //单利赋值
- _instance = this;
- BG = transform.Find("BG");
- Content = transform.Find("Content");
- Pop = transform.Find("Pop");
- //切换场景不销毁
- DontDestroyOnLoad(this);
- }
- private void Start()
- {
- //ShowUI(new object[] { "LoadingView","Start" });
- }
- /// <summary>
- /// 显示某个UI
- /// </summary>
- /// <param name="args"></param>
- public PinBallUIBase ShowUI(object[] args)
- {
- if (null == args || args.Length == 0)
- {
- Debug.Log("args error ---->>>>");
- return null;
- }
- PinBallUIBase mObj = null;
- if (m_dicUI.TryGetValue(args[0].ToString(), out mObj))
- {
- if (args.Length > 1)
- {
- object[] margs = new object[args.Length - 1];
- Array.Copy(args, 1, margs, 0, args.Length - 1);
- mObj.ShowUI(margs);
- }
- else
- {
- mObj.ShowUI(null);
- }
- }
- else
- {
-
- GameObject go = Resources.Load<GameObject>(string.Format("Prefabs/View/{0}", args[0].ToString()));
- if (null == go)
- {
- Debug.Log(args[0].ToString() + " ui not exist ---->>>>");
- }
- else
- {
- GameObject gObj = Instantiate(go,this.transform);
- //Instantiate(go);
- mObj = gObj.GetComponent<PinBallUIBase>();
- m_dicUI[args[0].ToString()] = mObj;
- //显示UI 传参
- if (args.Length > 1)
- {
- object[] margs = new object[args.Length - 1];
- Array.Copy(args, 1, margs, 0, args.Length - 1);
- mObj.ShowUI(margs);
- }
- else
- {
- mObj.ShowUI(null);
- }
- //设置UI显示层级
- switch (mObj.uILevel)
- {
- case PinBallUILevel.BG:
- gObj.transform.SetParent(BG);
- break;
- case PinBallUILevel.Content:
- gObj.transform.SetParent(Content);
- break;
- case PinBallUILevel.Pop:
- gObj.transform.SetParent(Pop);
- break;
- default:
- break;
- }
- }
- }
- return mObj;
- }
- /// <summary>
- /// 广播UI消息 UI之间的通信
- /// </summary>
- /// <param name="args"></param>
- public void BroadcastUI(object[] args)
- {
- PinBallUIBase mObj = null;
- if (m_dicUI.TryGetValue(args[0].ToString(), out mObj))
- {
- object[] margs = new object[args.Length - 1];
- Array.Copy(args, 1, margs, 0, args.Length - 1);
- mObj.BroadcastUI(margs);
- }
- }
- /// <summary>
- /// 关闭UI
- /// </summary>
- /// <param name="args"></param>
- public void CloseUI(object[] args)
- {
- PinBallUIBase mObj = null;
- if (m_dicUI.TryGetValue(args[0].ToString(), out mObj))
- {
- mObj.HideUI();
- }
- }
- /// <summary>
- /// 销毁UI
- /// </summary>
- /// <param name="args"></param>
- public void DestroyUI(object[] args)
- {
- PinBallUIBase mObj = null;
- if (m_dicUI.TryGetValue(args[0].ToString(), out mObj))
- {
- mObj.HideUI();
- Destroy(mObj.gameObject);
- m_dicUI[args[0].ToString()] = null;
- }
- }
- /// <summary>
- /// 销毁所有UI
- /// </summary>
- public void DestroyAllUI()
- {
- foreach (var item in m_dicUI)
- {
- Destroy(item.Value.gameObject);
- }
- m_dicUI.Clear();
- }
- }
|