using DragonBones; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; using System.Collections; using System.Collections.Generic; using Transform = UnityEngine.Transform; public class Tutorial : Regist, IPointerClickHandler { #region 变量 public static bool MaskLock; public static Material Material; public static Transform Arrow; public static List HighLightList = new List(); #endregion public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform target) { SetArea(target, radiusX, radiusY); PointScene(arrowPos.position, target); } public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform targetPos, Transform target) { SetArea(target, radiusX, radiusY); PointScene(arrowPos.position, targetPos); } public static void HightScreen(Transform arrowPos, Transform target, int order = 1) { target.AddComponent(); Canvas canvas = target.GetComponent(); canvas.overrideSorting = true; canvas.sortingOrder = order; MaskLock = true; PointScreen(arrowPos.position, target); ManaReso.Get("N_Mask").TweenForGra(); HighLightList.Add(target); } public static void HightScreen(Transform arrowPos, Transform targetPos, Transform target) { target.AddComponent(); Canvas canvas = target.GetComponent(); canvas.overrideSorting = true; canvas.sortingOrder = 1; MaskLock = true; PointScreen(arrowPos.position, targetPos); ManaReso.Get("N_Mask").TweenForGra(); HighLightList.Add(target); } public static void HightDisable() { for (int i = 0; i < HighLightList.Count; i++) { HighLightList[i].GetComponent().overrideSorting = false; Destroy(HighLightList[i].GetComponent()); Destroy(HighLightList[i].GetComponent()); } HighLightList = new List(); ManaReso.Get("N_Mask").TweenBacGra(); ManaReso.Get("N_Arrow").TweenBacCG(); ClearArea(); MaskLock = false; } public static void HightDisable(int index, bool hideArrow) { HighLightList[index].GetComponent().overrideSorting = false; Destroy(HighLightList[index].GetComponent()); Destroy(HighLightList[index].GetComponent()); HighLightList.RemoveAt(index); if (hideArrow) { ManaReso.Get("N_Arrow").TweenBacCG(); } } public static void SetArea(Transform tra, float radiusX, float radiusY) { Vector3 screenPos = Camera.main.WorldToScreenPoint(tra.position); screenPos = new Vector3(screenPos.x / Screen.width, screenPos.y / Screen.height, 0); if (MaskLock) { Material.SetFloat("_RadiusX", radiusX); Material.SetFloat("_RadiusY", radiusY); Material.SetVector("_Center", screenPos); } else { SceneMask.SetArea(tra, screenPos, radiusX, radiusY); } } public static void ClearArea() { if (MaskLock) { Material.SetFloat("_RadiusX", 0); Material.SetFloat("_RadiusY", 0); Material.SetVector("_Center", new Vector2(0, 0)); } else { SceneMask.ClearArea(); } } public static void PointScene(Vector3 pos, Transform tra) { Vector3 pointPos = Camera.main.WorldToScreenPoint(tra.position); pos = Camera.main.WorldToScreenPoint(pos); Arrow.position = pos; Arrow.right = pointPos - Arrow.position; Arrow.TweenForCG(); } public static void PointScreen(Vector3 pos, Transform tra) { Arrow.position = pos; Arrow.right = tra.position - Arrow.position; Arrow.TweenForCG(); } public static void ShowDescriptScene(Vector3 pos) { pos = Camera.main.WorldToScreenPoint(pos); ShowDescriptScreen(pos); } public static void ShowDescriptScreen(Vector3 pos) { ManaReso.Get("N_LabBK").TweenForCG(); ManaReso.Get("N_LabBK").transform.position = pos; } public static void SetUIButton(Vector3 pos, float radiusX, float radiusY) { pos = Camera.main.WorldToScreenPoint(pos); Image image = ManaReso.Get("N_Button"); image.transform.position = pos; image.transform.localScale = new Vector3(radiusX*2, radiusY*2, 1); image.SetActive(true); } public void OnPointerClick(PointerEventData eventData) { ManaAudio.PlayClip(Clip.BtnClip); if (eventData.rawPointerPress.name == "PlayerBk1") { Vector3 offset = ManaReso.Get("PlayerBk1").position; offset.x = -offset.x; offset.y = 0; ManaReso.Get("PlayerBk1").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk2").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk3").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk1").TweenForScale(); ManaReso.Get("PlayerBk2").TweenBacScale(); ManaReso.Get("PlayerBk3").TweenBacScale(); ManaPlayer.PlayerPink.TweenBacScale(); ManaPlayer.PlayerBlond.TweenBacScale(); ManaPlayer.PlayerBrown.TweenForScale(); ManaPlayer.SeleTra = ManaPlayer.PlayerBrown; } else if (eventData.rawPointerPress.name == "PlayerBk2") { Vector3 offset = ManaReso.Get("PlayerBk2").position; offset.x = -offset.x; offset.y = 0; ManaReso.Get("PlayerBk1").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk2").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk3").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk2").TweenForScale(); ManaReso.Get("PlayerBk1").TweenBacScale(); ManaReso.Get("PlayerBk3").TweenBacScale(); ManaPlayer.PlayerPink.TweenBacScale(); ManaPlayer.PlayerBlond.TweenForScale(); ManaPlayer.PlayerBrown.TweenBacScale(); ManaPlayer.SeleTra = ManaPlayer.PlayerBlond; } else if (eventData.rawPointerPress.name == "PlayerBk3") { Vector3 offset = ManaReso.Get("PlayerBk3").position; offset.x = -offset.x; offset.y = 0; ManaReso.Get("PlayerBk1").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk2").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk3").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ManaReso.Get("PlayerBk3").TweenForScale(); ManaReso.Get("PlayerBk1").TweenBacScale(); ManaReso.Get("PlayerBk2").TweenBacScale(); ManaPlayer.PlayerPink.TweenForScale(); ManaPlayer.PlayerBlond.TweenBacScale(); ManaPlayer.PlayerBrown.TweenBacScale(); ManaPlayer.SeleTra = ManaPlayer.PlayerPink; } else if (eventData.rawPointerPress.name == "TutorialCollider") { if (ManaTutorial.TutorialIndexA == 4) { ManaTutorial.EndA4(); } } } }