Tutorial.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  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. private static List<TweenScale> hightAnims = new List<TweenScale>();
  29. #endregion
  30. public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform target)
  31. {
  32. SetArea(target, radiusX, radiusY);
  33. PointScene(arrowPos.position, target);
  34. }
  35. public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform targetPos, Transform target)
  36. {
  37. SetArea(target, radiusX, radiusY);
  38. PointScene(arrowPos.position, targetPos);
  39. }
  40. public static void HightScreen(Transform arrowPos, Transform target, int order = 1, bool scale = true, Vector3? scaleVec = null)
  41. {
  42. target.AddComponent<GraphicRaycaster>();
  43. Canvas canvas = target.GetComponent<Canvas>();
  44. canvas.overrideSorting = true;
  45. canvas.sortingOrder = order;
  46. MaskFlag = true;
  47. PointScreen(arrowPos.position, target);
  48. ResourceManager.Get(CanvasLabel.N_Mask).TweenForGra();
  49. if (scaleVec == null)
  50. {
  51. scaleVec = new Vector3(0.2f, 0.2f, 0.2f);
  52. }
  53. if (scale)
  54. {
  55. TweenScale tweenScale = new TweenScale(target, target.localScale, target.localScale + scaleVec.Value, 0.5f, true, true, Curve.EaseOutQuad);
  56. tweenScale.OnForwardFinish += () => tweenScale.StartBackward();
  57. tweenScale.OnBackwardFinish += () => tweenScale.StartForward();
  58. tweenScale.StartForward();
  59. hightAnims.Add(tweenScale);
  60. }
  61. HighLightList.Add(target);
  62. }
  63. public static void HightScreen(Transform arrowPos, Transform targetPos, Transform target, bool scale = true, Vector3? scaleVec = null)
  64. {
  65. target.AddComponent<GraphicRaycaster>();
  66. Canvas canvas = target.GetComponent<Canvas>();
  67. canvas.overrideSorting = true;
  68. canvas.sortingOrder = 1;
  69. MaskFlag = true;
  70. PointScreen(arrowPos.position, targetPos);
  71. ResourceManager.Get(CanvasLabel.N_Mask).TweenForGra();
  72. if (scaleVec == null)
  73. {
  74. scaleVec = new Vector3(0.2f, 0.2f, 0.2f);
  75. }
  76. if (scale)
  77. {
  78. TweenScale tweenScale = new TweenScale(target, target.localScale, target.localScale + scaleVec.Value, 0.5f, true, true, Curve.EaseOutQuad);
  79. tweenScale.OnForwardFinish += () => tweenScale.StartBackward();
  80. tweenScale.OnBackwardFinish += () => tweenScale.StartForward();
  81. tweenScale.StartForward();
  82. hightAnims.Add(tweenScale);
  83. }
  84. HighLightList.Add(target);
  85. }
  86. public static void HightDisable()
  87. {
  88. for (int i = 0; i < HighLightList.Count; i++)
  89. {
  90. HighLightList[i].GetComponent<Canvas>().overrideSorting = false;
  91. Destroy(HighLightList[i].GetComponent<GraphicRaycaster>());
  92. Destroy(HighLightList[i].GetComponent<Canvas>());
  93. }
  94. HighLightList = new List<Transform>();
  95. foreach (var hightAnim in hightAnims)
  96. {
  97. hightAnim.Target.localScale = hightAnim.Origin;
  98. hightAnim.Pause();
  99. }
  100. hightAnims = new List<TweenScale>();
  101. ResourceManager.Get(CanvasLabel.N_Mask).TweenBacGra();
  102. ResourceManager.Get(CanvasLabel.N_Arrow).TweenBacCG();
  103. ClearArea();
  104. MaskFlag = false;
  105. }
  106. public static void HightDisable(int index, bool hideArrow)
  107. {
  108. HighLightList[index].GetComponent<Canvas>().overrideSorting = false;
  109. Destroy(HighLightList[index].GetComponent<GraphicRaycaster>());
  110. Destroy(HighLightList[index].GetComponent<Canvas>());
  111. HighLightList.RemoveAt(index);
  112. hightAnims[index].Target.localScale = hightAnims[index].Origin;
  113. hightAnims[index].Pause();
  114. hightAnims.RemoveAt(index);
  115. if (hideArrow)
  116. {
  117. ResourceManager.Get(CanvasLabel.N_Arrow).TweenBacCG();
  118. }
  119. }
  120. public static void SetArea(Transform tra, float radiusX, float radiusY)
  121. {
  122. Vector3 screenPos = Camera.main.WorldToScreenPoint(tra.position);
  123. screenPos = new Vector3(screenPos.x / Screen.width, screenPos.y / Screen.height, 0);
  124. if (MaskFlag)
  125. {
  126. Material.SetFloat("_RadiusX", radiusX);
  127. Material.SetFloat("_RadiusY", radiusY);
  128. Material.SetVector("_Center", screenPos);
  129. }
  130. else
  131. {
  132. SceneMask.SetArea(tra, screenPos, radiusX, radiusY);
  133. }
  134. }
  135. public static void ClearArea()
  136. {
  137. if (MaskFlag)
  138. {
  139. Material.SetFloat("_RadiusX", 0);
  140. Material.SetFloat("_RadiusY", 0);
  141. Material.SetVector("_Center", new Vector2(0, 0));
  142. }
  143. else
  144. {
  145. SceneMask.ClearArea();
  146. }
  147. }
  148. public static void PointScene(Vector3 pos, Transform tra)
  149. {
  150. Vector3 pointPos = Camera.main.WorldToScreenPoint(tra.position);
  151. pos = Camera.main.WorldToScreenPoint(pos);
  152. Arrow.position = pos;
  153. Arrow.right = pointPos - Arrow.position;
  154. Arrow.TweenForCG();
  155. }
  156. public static void PointScreen(Vector3 pos, Transform tra)
  157. {
  158. Arrow.position = pos;
  159. Arrow.right = tra.position - Arrow.position;
  160. Arrow.TweenForCG();
  161. }
  162. public static void ShowDescriptScene(Vector3 pos)
  163. {
  164. pos = Camera.main.WorldToScreenPoint(pos);
  165. ShowDescriptScreen(pos);
  166. }
  167. public static void ShowDescriptScreen(Vector3 pos)
  168. {
  169. ResourceManager.Get(CanvasLabel.N_LabBK).TweenForCG();
  170. ResourceManager.Get(CanvasLabel.N_LabBK).transform.position = pos;
  171. }
  172. public static void SetUIButton(Vector3 pos, float radiusX, float radiusY)
  173. {
  174. pos = Camera.main.WorldToScreenPoint(pos);
  175. Image image = ResourceManager.Get<Image>(CanvasLabel.N_Button);
  176. image.transform.position = pos;
  177. image.transform.localScale = new Vector3(radiusX*2, radiusY*2, 1);
  178. image.SetActive(true);
  179. }
  180. public void OnPointerClick(PointerEventData eventData)
  181. {
  182. AudioManager.PlayClip(AudioLabel.ClickButton);
  183. if (eventData.rawPointerPress.name == TutorialLabel.PlayerBk1)
  184. {
  185. Vector3 offset = ResourceManager.Get(TutorialLabel.PlayerBk1).position;
  186. offset.x = -offset.x;
  187. offset.y = 0;
  188. ResourceManager.Get(TutorialLabel.PlayerBk1).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  189. ResourceManager.Get(TutorialLabel.PlayerBk2).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  190. ResourceManager.Get(TutorialLabel.PlayerBk3).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  191. ResourceManager.Get(TutorialLabel.PlayerBk1).TweenForScale();
  192. ResourceManager.Get(TutorialLabel.PlayerBk2).TweenBacScale();
  193. ResourceManager.Get(TutorialLabel.PlayerBk3).TweenBacScale();
  194. PlayerManager.DefaultPinkPlayer.TweenBacScale();
  195. PlayerManager.DefaultBlondPlayer.TweenBacScale();
  196. PlayerManager.DefaultBrownPlayer.TweenForScale();
  197. PlayerManager.SelectedPlayer = PlayerManager.DefaultBrownPlayer;
  198. }
  199. else if (eventData.rawPointerPress.name == TutorialLabel.PlayerBk2)
  200. {
  201. Vector3 offset = ResourceManager.Get(TutorialLabel.PlayerBk2).position;
  202. offset.x = -offset.x;
  203. offset.y = 0;
  204. ResourceManager.Get(TutorialLabel.PlayerBk1).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  205. ResourceManager.Get(TutorialLabel.PlayerBk2).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  206. ResourceManager.Get(TutorialLabel.PlayerBk3).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  207. ResourceManager.Get(TutorialLabel.PlayerBk2).TweenForScale();
  208. ResourceManager.Get(TutorialLabel.PlayerBk1).TweenBacScale();
  209. ResourceManager.Get(TutorialLabel.PlayerBk3).TweenBacScale();
  210. PlayerManager.DefaultPinkPlayer.TweenBacScale();
  211. PlayerManager.DefaultBlondPlayer.TweenForScale();
  212. PlayerManager.DefaultBrownPlayer.TweenBacScale();
  213. PlayerManager.SelectedPlayer = PlayerManager.DefaultBlondPlayer;
  214. }
  215. else if (eventData.rawPointerPress.name == TutorialLabel.PlayerBk3)
  216. {
  217. Vector3 offset = ResourceManager.Get(TutorialLabel.PlayerBk3).position;
  218. offset.x = -offset.x;
  219. offset.y = 0;
  220. ResourceManager.Get(TutorialLabel.PlayerBk1).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  221. ResourceManager.Get(TutorialLabel.PlayerBk2).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  222. ResourceManager.Get(TutorialLabel.PlayerBk3).MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad);
  223. ResourceManager.Get(TutorialLabel.PlayerBk3).TweenForScale();
  224. ResourceManager.Get(TutorialLabel.PlayerBk1).TweenBacScale();
  225. ResourceManager.Get(TutorialLabel.PlayerBk2).TweenBacScale();
  226. PlayerManager.DefaultPinkPlayer.TweenForScale();
  227. PlayerManager.DefaultBlondPlayer.TweenBacScale();
  228. PlayerManager.DefaultBrownPlayer.TweenBacScale();
  229. PlayerManager.SelectedPlayer = PlayerManager.DefaultPinkPlayer;
  230. }
  231. else if (eventData.rawPointerPress.name == TutorialLabel.TutorialCollider)
  232. {
  233. if (TutorialManager.NewplayerTutorialIndex == 4)
  234. {
  235. TutorialManager.EndClickSlot();
  236. }
  237. }
  238. }
  239. }