123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- using UnityEngine;
- using System.Collections;
- public class PopUpManager : MonoBehaviour {
- public static bool modal = false;
- public static void UpdateModal()
- {
- PopUpPanel[] popUpPanels = GameObject.FindObjectsOfType<PopUpPanel>();
- for(int i=0; i<popUpPanels.Length; i++)
- {
- PopUpPanel panel = popUpPanels[i];
- if(panel.gameObject.activeSelf && panel.modal == true)
- {
- modal = true;
- return;
- }
- }
- modal = false;
- }
- public static PopUpPanel AddPopUp(GameObject panelPrefab, Transform parent=null, bool modal=false, System.Type panelType=null)
- {
- if(panelPrefab == null)
- return null;
- GameObject gameObj = Instantiate(panelPrefab) as GameObject;
- PopUpPanel panel = null;
- if (panelType != null)
- {
- System.Type popType = panelType.GetType();
- // panel = (PopUpPanel)(DllManager.instance.AddCompotent<popType>(gameObj, popType.ToString()));
- panel = (PopUpPanel)gameObj.AddComponent(panelType);
- }
- else
- {
- panel = gameObj.GetComponent<PopUpPanel>();
- }
- //panel.gameObject.AddComponent<PopUpUtil>();
- DllManager.instance.AddCompotent<PopUpUtil>(panel.gameObject, "PopUpUtil");
- Vector3 originSizeDelta = panel.GetComponent<RectTransform>().sizeDelta;
- if(parent == null)
- {
- MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
- //parent = canvas.transform.FindChild("UIRoot");
- PopUpManager.AddToForwardCanvas(gameObj);
- }
- panel.modal = modal;
- panel.Added();
- UpdateModal();
- return panel;
- }
- public static void AddToMainCanvas(GameObject gameObj, Transform parent = null)
- {
- RectTransform rectTrans = gameObj.GetComponent<RectTransform>();
- if(rectTrans != null)
- {
- Vector3 originPos = rectTrans.localPosition;
- Vector3 originSizeDelta = rectTrans.sizeDelta;
- Vector3 originRotation = rectTrans.localEulerAngles;
- if(parent == null)
- {
- MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
- parent = canvas.transform.FindChild("UIRoot");
- }
- gameObj.transform.SetParent(parent);
- gameObj.transform.localScale = new Vector3(1f, 1f, 1f);
- rectTrans.localPosition = originPos;
- rectTrans.sizeDelta = originSizeDelta;
- rectTrans.localEulerAngles = originRotation;
- }
- else
- {
- Vector3 pos =gameObj.transform.localPosition;
- Vector3 scale = gameObj.transform.localScale;
- if(parent == null)
- {
- MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
- parent = canvas.transform.FindChild("UIRoot");
- }
- gameObj.transform.SetParent(parent);
- gameObj.transform.localScale = scale;
- gameObj.transform.localPosition = pos;
- }
- }
- public static void AddToForwardCanvas(GameObject gameObj, Transform parent = null)
- {
- RectTransform rectTrans = gameObj.GetComponent<RectTransform>();
- if(rectTrans != null)
- {
- Vector3 anchoredPosition3D = rectTrans.anchoredPosition3D;
- Vector3 originSizeDelta = rectTrans.sizeDelta;
- Vector3 originRotation = rectTrans.localEulerAngles;
-
- if(parent == null)
- {
- ForwardCanvas canvas = GameObject.FindObjectOfType<ForwardCanvas>();
- parent = canvas.transform.FindChild("UIRoot");
- }
- gameObj.transform.SetParent(parent);
- gameObj.transform.localScale = new Vector3(1f, 1f, 1f);
- rectTrans.anchoredPosition3D = anchoredPosition3D;
- rectTrans.sizeDelta = originSizeDelta;
- rectTrans.localEulerAngles = originRotation;
- }
- else
- {
- Vector3 pos =gameObj.transform.localPosition;
- Vector3 scale = gameObj.transform.localScale;
- if(parent == null)
- {
- MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
- parent = canvas.transform.FindChild("UIRoot");
- }
- gameObj.transform.SetParent(parent);
- gameObj.transform.localScale = scale;
- gameObj.transform.localPosition = pos;
- }
- }
- public static void ClearForwardCanvas()
- {
- ForwardCanvas canvas = GameObject.FindObjectOfType<ForwardCanvas>();
- Transform parent = canvas.transform.FindChild("UIRoot");
- int count = parent.childCount - 1;
- for (int i = count; i > -1; i--)
- {
- PopUpPanel panel = parent.GetChild(i).GetComponent<PopUpPanel>();
- if (panel != null)
- Destroy(panel.gameObject);// panel.OnClose();
- }
- }
- public static void RemovePopUp(PopUpPanel panel)
- {
- Destroy(panel.gameObject);
- UpdateModal();
- }
- }
|