PopUpManager.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using UnityEngine;
  2. using System.Collections;
  3. public class PopUpManager : MonoBehaviour {
  4. public static bool modal = false;
  5. public static void UpdateModal()
  6. {
  7. PopUpPanel[] popUpPanels = GameObject.FindObjectsOfType<PopUpPanel>();
  8. for(int i=0; i<popUpPanels.Length; i++)
  9. {
  10. PopUpPanel panel = popUpPanels[i];
  11. if(panel.gameObject.activeSelf && panel.modal == true)
  12. {
  13. modal = true;
  14. return;
  15. }
  16. }
  17. modal = false;
  18. }
  19. public static PopUpPanel AddPopUp(GameObject panelPrefab, Transform parent=null, bool modal=false, System.Type panelType=null)
  20. {
  21. if(panelPrefab == null)
  22. return null;
  23. GameObject gameObj = Instantiate(panelPrefab) as GameObject;
  24. PopUpPanel panel = null;
  25. if (panelType != null)
  26. {
  27. System.Type popType = panelType.GetType();
  28. // panel = (PopUpPanel)(DllManager.instance.AddCompotent<popType>(gameObj, popType.ToString()));
  29. panel = (PopUpPanel)gameObj.AddComponent(panelType);
  30. }
  31. else
  32. {
  33. panel = gameObj.GetComponent<PopUpPanel>();
  34. }
  35. //panel.gameObject.AddComponent<PopUpUtil>();
  36. DllManager.instance.AddCompotent<PopUpUtil>(panel.gameObject, "PopUpUtil");
  37. Vector3 originSizeDelta = panel.GetComponent<RectTransform>().sizeDelta;
  38. if(parent == null)
  39. {
  40. MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
  41. //parent = canvas.transform.FindChild("UIRoot");
  42. PopUpManager.AddToForwardCanvas(gameObj);
  43. }
  44. panel.modal = modal;
  45. panel.Added();
  46. UpdateModal();
  47. return panel;
  48. }
  49. public static void AddToMainCanvas(GameObject gameObj, Transform parent = null)
  50. {
  51. RectTransform rectTrans = gameObj.GetComponent<RectTransform>();
  52. if(rectTrans != null)
  53. {
  54. Vector3 originPos = rectTrans.localPosition;
  55. Vector3 originSizeDelta = rectTrans.sizeDelta;
  56. Vector3 originRotation = rectTrans.localEulerAngles;
  57. if(parent == null)
  58. {
  59. MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
  60. parent = canvas.transform.FindChild("UIRoot");
  61. }
  62. gameObj.transform.SetParent(parent);
  63. gameObj.transform.localScale = new Vector3(1f, 1f, 1f);
  64. rectTrans.localPosition = originPos;
  65. rectTrans.sizeDelta = originSizeDelta;
  66. rectTrans.localEulerAngles = originRotation;
  67. }
  68. else
  69. {
  70. Vector3 pos =gameObj.transform.localPosition;
  71. Vector3 scale = gameObj.transform.localScale;
  72. if(parent == null)
  73. {
  74. MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
  75. parent = canvas.transform.FindChild("UIRoot");
  76. }
  77. gameObj.transform.SetParent(parent);
  78. gameObj.transform.localScale = scale;
  79. gameObj.transform.localPosition = pos;
  80. }
  81. }
  82. public static void AddToForwardCanvas(GameObject gameObj, Transform parent = null)
  83. {
  84. RectTransform rectTrans = gameObj.GetComponent<RectTransform>();
  85. if(rectTrans != null)
  86. {
  87. Vector3 anchoredPosition3D = rectTrans.anchoredPosition3D;
  88. Vector3 originSizeDelta = rectTrans.sizeDelta;
  89. Vector3 originRotation = rectTrans.localEulerAngles;
  90. if(parent == null)
  91. {
  92. ForwardCanvas canvas = GameObject.FindObjectOfType<ForwardCanvas>();
  93. parent = canvas.transform.FindChild("UIRoot");
  94. }
  95. gameObj.transform.SetParent(parent);
  96. gameObj.transform.localScale = new Vector3(1f, 1f, 1f);
  97. rectTrans.anchoredPosition3D = anchoredPosition3D;
  98. rectTrans.sizeDelta = originSizeDelta;
  99. rectTrans.localEulerAngles = originRotation;
  100. }
  101. else
  102. {
  103. Vector3 pos =gameObj.transform.localPosition;
  104. Vector3 scale = gameObj.transform.localScale;
  105. if(parent == null)
  106. {
  107. MainCanvas canvas = GameObject.FindObjectOfType<MainCanvas>();
  108. parent = canvas.transform.FindChild("UIRoot");
  109. }
  110. gameObj.transform.SetParent(parent);
  111. gameObj.transform.localScale = scale;
  112. gameObj.transform.localPosition = pos;
  113. }
  114. }
  115. public static void ClearForwardCanvas()
  116. {
  117. ForwardCanvas canvas = GameObject.FindObjectOfType<ForwardCanvas>();
  118. Transform parent = canvas.transform.FindChild("UIRoot");
  119. int count = parent.childCount - 1;
  120. for (int i = count; i > -1; i--)
  121. {
  122. PopUpPanel panel = parent.GetChild(i).GetComponent<PopUpPanel>();
  123. if (panel != null)
  124. Destroy(panel.gameObject);// panel.OnClose();
  125. }
  126. }
  127. public static void RemovePopUp(PopUpPanel panel)
  128. {
  129. Destroy(panel.gameObject);
  130. UpdateModal();
  131. }
  132. }