同步操作将从 Brando丶/Unity新手引导框架 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System.Collections;using System.Collections.Generic;using TMPro;using UnityEngine;using UnityEngine.SceneManagement;using UnityEngine.UI;public class GuidePanel : MonoBehaviour, ICanvasRaycastFilter{public static GuidePanel instance = null;public GameObject fingerObj;public Image leftRoleSprite, rightRoleSprite, dialogBgSprite;public Text dialogText;public CircleGuidanceController circleMask;public RectGuidanceController rectMask;public GameObject maskContainer;public GameObject bg;//public Transform clickAreaTrans,bg;//public BoxCollider clickAreaBox;//public GameObject arrow,leftDialog,rightDialog;//public GuideDialogTextShow dialogTextShow;public bool isInLoading = false;private int curGuideId = 0;private GameObject curCloneGameObj;public RectTransform cloneContainer;public RectTransform clickArea;//点击区域,默认全屏,如果有克隆物体则只能点击克隆物体public GameObject arrow;private GuideInfo guideInfo;private void Start(){instance = this;GuideEvent.instance.Init();}// public override void Show()// {// //Debug.Log ("GuidePanel show");// base.Show();// }//// public override void Hide()// {// base.Hide();// gameObject.SetActive(false);// }public void SetDataById(int id){if (curCloneGameObj != null){Destroy(curCloneGameObj);}curGuideId = id;guideInfo = GuideEvent.instance.GetGuideInfo(id);PlayerData.instance.guideId = curGuideId;bool isShowBG = GuideTextData.instance.GetIsShowBG(curGuideId);bg.gameObject.SetActive(isShowBG);if (!string.IsNullOrEmpty(guideInfo.guideText)){dialogText.gameObject.SetActive(true);dialogText.text = guideInfo.guideText;dialogBgSprite.gameObject.SetActive(true);if (guideInfo.dialogDir != DialogDir.Mid){RectTransform.Edge edge = (RectTransform.Edge)guideInfo.dialogDir;int size = 0;switch (edge){case RectTransform.Edge.Bottom:case RectTransform.Edge.Top:size = Screen.height / 3;break;case RectTransform.Edge.Left:case RectTransform.Edge.Right:size = Screen.width / 3;break;}dialogBgSprite.GetComponent<RectTransform>().SetInsetAndSizeFromParentEdge(edge, 0, size);}else{dialogBgSprite.GetComponent<RectTransform>().localPosition = Vector3.zero;dialogBgSprite.GetComponent<RectTransform>().sizeDelta = new Vector2(Screen.width / 3, Screen.height / 3);}}else{dialogBgSprite.gameObject.SetActive(false);}Sprite roleSprite = guideInfo.roleSprite;if (roleSprite != null){leftRoleSprite.sprite = roleSprite;rightRoleSprite.sprite = roleSprite;leftRoleSprite.gameObject.SetActive(true);rightRoleSprite.gameObject.SetActive(true);}else{leftRoleSprite.gameObject.SetActive(false);rightRoleSprite.gameObject.SetActive(false);}//50的偏差为手指动画的位移Vector3 fingerPos = guideInfo.trans == null ? Vector3.zero : new Vector3(guideInfo.trans.position.x + 50, guideInfo.trans.position.y - 50, guideInfo.trans.position.z);if (fingerPos != Vector3.zero){fingerObj.SetActive(true);fingerObj.transform.position = fingerPos;}else{fingerObj.gameObject.SetActive(false);}if (guideInfo.showType == GuideShowType.Clone){if (guideInfo.trans.gameObject != null){curCloneGameObj = CloneGameObject(guideInfo);curCloneGameObj.SetActive(true);}maskContainer.gameObject.SetActive(false);clickArea.gameObject.SetActive(true);clickArea.sizeDelta = curCloneGameObj.GetComponent<RectTransform>().sizeDelta;clickArea.position = curCloneGameObj.transform.position;}else{clickArea.gameObject.SetActive(false);if (guideInfo.maskType == MaskType.Circle){circleMask.SetTarget(guideInfo.trans);maskContainer.SetActive(true);circleMask.gameObject.SetActive(true);rectMask.gameObject.SetActive(false);}else if (guideInfo.maskType == MaskType.Rect){rectMask.SetTarget(guideInfo.trans);maskContainer.SetActive(true);circleMask.gameObject.SetActive(false);rectMask.gameObject.SetActive(true);}else{maskContainer.SetActive(false);clickArea.gameObject.SetActive(true);clickArea.sizeDelta = new Vector2(3000, 3000);//默认全屏clickArea.localPosition = Vector3.zero;}}if (IsInvoking("DelayCallEvent")){CancelInvoke("DelayCallEvent");}Invoke("DelayCallEvent", 0.1f);}public GameObject CloneGameObject(GuideInfo info){GameObject cloneObj = GameObject.Instantiate(info.trans.gameObject);//如果克隆的物体是灰色的,改成正常颜色//ChangeToGrayMaterial[] changeToGrayMaterials = cloneObj.GetComponentsInChildren<ChangeToGrayMaterial>();//if(changeToGrayMaterials.Length!=0){// foreach (ChangeToGrayMaterial gray in changeToGrayMaterials)// {// gray.SetGray(false);// }//}cloneObj.transform.SetParent(cloneContainer);cloneObj.transform.position = info.trans.position;cloneObj.transform.localScale = info.trans.localScale;cloneObj.transform.eulerAngles = info.trans.eulerAngles;//关闭原物体的事件Button[] buttons = cloneObj.GetComponentsInChildren<Button>();foreach (var btn in buttons){Destroy(btn);}return cloneObj;}private void DelayCallEvent(){string strEvent = GuideTextData.instance.GetEvent(curGuideId);if (!string.IsNullOrEmpty(strEvent)){GuideEvent.instance.gameObject.SendMessage(strEvent);}}public void ShowGuideById(int id){SetDataById(id);UIManager.instance.ShowGuidePanel(true);}public void ClickNext(){Debug.Log("next");string strClick = GuideTextData.instance.GetClickAction(curGuideId);int nextId = GuideTextData.instance.GetNextID(curGuideId);if (nextId != 0){if (!string.IsNullOrEmpty(strClick)){GuideEvent.instance.gameObject.SendMessage(strClick);}SetDataById(nextId);}else{if (isInLoading){gameObject.SetActive(false);}else{UIManager.instance.ShowGuidePanel(false);}if (!string.IsNullOrEmpty(strClick)){GuideEvent.instance.gameObject.SendMessage(strClick);}Debug.Log("下一步引导id为0,结束引导");}}public void SetArrowState(bool active){arrow.SetActive(active);}//穿透点击事件public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera){if (guideInfo.trans == null) return false;return !RectTransformUtility.RectangleContainsScreenPoint(guideInfo.trans, sp);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。