Tutorial.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. using DragonBones;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.Events;
  5. using UnityEngine.EventSystems;
  6. using System.Collections;
  7. using System.Collections.Generic;
  8. using Transform = UnityEngine.Transform;
  9. public class TutorialLabel
  10. {
  11. public static string PinkPlayerPos = "PlayerPos3";
  12. public static string BlondPlayerPos = "PlayerPos2";
  13. public static string BrownPlayerPos = "PlayerPos1";
  14. public static string Tutorial = "Tutorial";
  15. public static string PlayerBk1 = "PlayerBk1";
  16. public static string PlayerBk2 = "PlayerBk2";
  17. public static string PlayerBk3 = "PlayerBk3";
  18. public static string TutorialMask = "TutorialMask";
  19. public static string TutorialCollider = "TutorialCollider";
  20. }
  21. public class Tutorial : Regist, IPointerClickHandler
  22. {
  23. #region Config
  24. public static bool MaskFlag;
  25. public static Material Material;
  26. public static Transform Arrow;
  27. public static List<Transform> HighLightList = new List<Transform>();
  28. #endregion
  29. public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform target)
  30. {
  31. SetArea(target, radiusX, radiusY);
  32. PointScene(arrowPos.position, target);
  33. }
  34. public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform targetPos, Transform target)
  35. {
  36. SetArea(target, radiusX, radiusY);
  37. PointScene(arrowPos.position, targetPos);
  38. }
  39. public static void HightScreen(Transform arrowPos, Transform target, int order = 1)
  40. {
  41. target.AddComponent<GraphicRaycaster>();
  42. Canvas canvas = target.GetComponent<Canvas>();
  43. canvas.overrideSorting = true;
  44. canvas.sortingOrder = order;
  45. MaskFlag = true;
  46. PointScreen(arrowPos.position, target);
  47. ResourceManager.Get(CanvasLabel.N_Mask).TweenForGra();
  48. HighLightList.Add(target);
  49. }
  50. public static void HightScreen(Transform arrowPos, Transform targetPos, Transform target)
  51. {
  52. target.AddComponent<GraphicRaycaster>();
  53. Canvas canvas = target.GetComponent<Canvas>();
  54. canvas.overrideSorting = true;
  55. canvas.sortingOrder = 1;
  56. MaskFlag = true;
  57. PointScreen(arrowPos.position, targetPos);
  58. ResourceManager.Get(CanvasLabel.N_Mask).TweenForGra();
  59. HighLightList.Add(target);
  60. }
  61. public static void HightDisable()
  62. {
  63. for (int i = 0; i < HighLightList.Count; i++)
  64. {
  65. HighLightList[i].GetComponent<Canvas>().overrideSorting = false;
  66. Destroy(HighLightList[i].GetComponent<GraphicRaycaster>());
  67. Destroy(HighLightList[i].GetComponent<Canvas>());
  68. }
  69. HighLightList = new List<Transform>();
  70. ResourceManager.Get(CanvasLabel.N_Mask).TweenBacGra();
  71. ResourceManager.Get(CanvasLabel.N_Arrow).TweenBacCG();
  72. ClearArea();
  73. MaskFlag = false;
  74. }
  75. public static void HightDisable(int index, bool hideArrow)
  76. {
  77. HighLightList[index].GetComponent<Canvas>().overrideSorting = false;
  78. Destroy(HighLightList[index].GetComponent<GraphicRaycaster>());
  79. Destroy(HighLightList[index].GetComponent<Canvas>());
  80. HighLightList.RemoveAt(index);
  81. if (hideArrow)
  82. {
  83. ResourceManager.Get(CanvasLabel.N_Arrow).TweenBacCG();
  84. }
  85. }
  86. public static void SetArea(Transform tra, float radiusX, float radiusY)
  87. {
  88. Vector3 screenPos = Camera.main.WorldToScreenPoint(tra.position);
  89. screenPos = new Vector3(screenPos.x / Screen.width, screenPos.y / Screen.height, 0);
  90. if (MaskFlag)
  91. {
  92. Material.SetFloat("_RadiusX", radiusX);
  93. Material.SetFloat("_RadiusY", radiusY);
  94. Material.SetVector("_Center", screenPos);
  95. }
  96. else
  97. {
  98. SceneMask.SetArea(tra, screenPos, radiusX, radiusY);
  99. }
  100. }
  101. public static void ClearArea()
  102. {
  103. if (MaskFlag)
  104. {
  105. Material.SetFloat("_RadiusX", 0);
  106. Material.SetFloat("_RadiusY", 0);
  107. Material.SetVector("_Center", new Vector2(0, 0));
  108. }
  109. else
  110. {
  111. SceneMask.ClearArea();
  112. }
  113. }
  114. public static void PointScene(Vector3 pos, Transform tra)
  115. {
  116. Vector3 pointPos = Camera.main.WorldToScreenPoint(tra.position);
  117. pos = Camera.main.WorldToScreenPoint(pos);
  118. Arrow.position = pos;
  119. Arrow.right = pointPos - Arrow.position;
  120. Arrow.TweenForCG();
  121. }
  122. public static void PointScreen(Vector3 pos, Transform tra)
  123. {
  124. Arrow.position = pos;
  125. Arrow.right = tra.position - Arrow.position;
  126. Arrow.TweenForCG();
  127. }
  128. public static void ShowDescriptScene(Vector3 pos)
  129. {
  130. pos = Camera.main.WorldToScreenPoint(pos);
  131. ShowDescriptScreen(pos);
  132. }
  133. public static void ShowDescriptScreen(Vector3 pos)
  134. {
  135. ResourceManager.Get(CanvasLabel.N_LabBK).TweenForCG();
  136. ResourceManager.Get(CanvasLabel.N_LabBK).transform.position = pos;
  137. }
  138. public static void SetUIButton(Vector3 pos, float radiusX, float radiusY)
  139. {
  140. pos = Camera.main.WorldToScreenPoint(pos);
  141. Image image = ResourceManager.Get<Image>(CanvasLabel.N_Button);
  142. image.transform.position = pos;
  143. image.transform.localScale = new Vector3(radiusX*2, radiusY*2, 1);
  144. image.SetActive(true);
  145. }
  146. public void OnPointerClick(PointerEventData eventData)
  147. {
  148. AudioManager.PlayClip(AudioLabel.ClickButton);
  149. if (eventData.rawPointerPress.name == TutorialLabel.PlayerBk1)
  150. {
  151. Vector3 offset = ResourceManager.Get(TutorialLabel.PlayerBk1).position;
  152. offset.x = -offset.x;
  153. offset.y = 0;
  154. ResourceManager.Get(TutorialLabel.PlayerBk1).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  155. ResourceManager.Get(TutorialLabel.PlayerBk2).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  156. ResourceManager.Get(TutorialLabel.PlayerBk3).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  157. ResourceManager.Get(TutorialLabel.PlayerBk1).TweenForScale();
  158. ResourceManager.Get(TutorialLabel.PlayerBk2).TweenBacScale();
  159. ResourceManager.Get(TutorialLabel.PlayerBk3).TweenBacScale();
  160. PlayerManager.DefaultPinkPlayer.TweenBacScale();
  161. PlayerManager.DefaultBlondPlayer.TweenBacScale();
  162. PlayerManager.DefaultBrownPlayer.TweenForScale();
  163. PlayerManager.SelectedPlayer = PlayerManager.DefaultBrownPlayer;
  164. }
  165. else if (eventData.rawPointerPress.name == TutorialLabel.PlayerBk2)
  166. {
  167. Vector3 offset = ResourceManager.Get(TutorialLabel.PlayerBk2).position;
  168. offset.x = -offset.x;
  169. offset.y = 0;
  170. ResourceManager.Get(TutorialLabel.PlayerBk1).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  171. ResourceManager.Get(TutorialLabel.PlayerBk2).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  172. ResourceManager.Get(TutorialLabel.PlayerBk3).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  173. ResourceManager.Get(TutorialLabel.PlayerBk2).TweenForScale();
  174. ResourceManager.Get(TutorialLabel.PlayerBk1).TweenBacScale();
  175. ResourceManager.Get(TutorialLabel.PlayerBk3).TweenBacScale();
  176. PlayerManager.DefaultPinkPlayer.TweenBacScale();
  177. PlayerManager.DefaultBlondPlayer.TweenForScale();
  178. PlayerManager.DefaultBrownPlayer.TweenBacScale();
  179. PlayerManager.SelectedPlayer = PlayerManager.DefaultBlondPlayer;
  180. }
  181. else if (eventData.rawPointerPress.name == TutorialLabel.PlayerBk3)
  182. {
  183. Vector3 offset = ResourceManager.Get(TutorialLabel.PlayerBk3).position;
  184. offset.x = -offset.x;
  185. offset.y = 0;
  186. ResourceManager.Get(TutorialLabel.PlayerBk1).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  187. ResourceManager.Get(TutorialLabel.PlayerBk2).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  188. ResourceManager.Get(TutorialLabel.PlayerBk3).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  189. ResourceManager.Get(TutorialLabel.PlayerBk3).TweenForScale();
  190. ResourceManager.Get(TutorialLabel.PlayerBk1).TweenBacScale();
  191. ResourceManager.Get(TutorialLabel.PlayerBk2).TweenBacScale();
  192. PlayerManager.DefaultPinkPlayer.TweenForScale();
  193. PlayerManager.DefaultBlondPlayer.TweenBacScale();
  194. PlayerManager.DefaultBrownPlayer.TweenBacScale();
  195. PlayerManager.SelectedPlayer = PlayerManager.DefaultPinkPlayer;
  196. }
  197. else if (eventData.rawPointerPress.name == TutorialLabel.TutorialCollider)
  198. {
  199. if (TutorialManager.NewplayerTutorialIndex == 4)
  200. {
  201. TutorialManager.EndClickSlot();
  202. }
  203. }
  204. }
  205. }