wangguan
2020-10-30 ab1a24fa8aaed0c9c678ce6771bb7e9031b79476
Assets/Scripts/Guide/GuidePanel.cs
@@ -3,7 +3,8 @@
using UnityEngine;
using UnityEngine.UI;
using System;
using KTGMGemClient;
using DG.Tweening;
/// <summary>
/// 新手引导UI脚本
/// </summary>
@@ -20,6 +21,7 @@
    private RectGuidance maskObj;
    private RectTransform image_Rim_Rect;//边框
    private GameObject particle_1, particle_2;//使用粒子特效
    private RectTransform image_Tip_Rect;//可以移动的提示框
    private Text text_Tip;//可以移动的提示框文字
@@ -42,6 +44,7 @@
    Image backgroundImg;//用来接受空白点击事件的图片
    RectTransform dragHandImg;//拖动标识手指
    /// <summary>
    /// 关闭所有UI
    /// </summary>
@@ -57,9 +60,10 @@
    void Awake()
    {
        tmpMask = GetComponent<Image>();
        tmpMask.enabled = false;
        backgroundImg = transform.Find("Button").GetComponent<Image>();
        backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        towerBuyBtn = GameObject.Find("MainUI/TowerBuyBtn");
        towerBuyBtn = GameObject.Find("BottomUI/TowerBuyBtn");
        tipsUI = transform.Find("Tips").gameObject;
        tipsUI.transform.SetAsLastSibling();//把tips放在最下面
@@ -79,6 +83,9 @@
        }
        image_Rim_Rect = transform.Find("Image_Rim").GetComponent<RectTransform>();
        particle_1 = image_Rim_Rect.transform.Find("Particle System Small").gameObject;
        particle_2 = image_Rim_Rect.transform.Find("Particle System Big").gameObject;
        image_Tip_Rect = transform.Find("Image_Tip").GetComponent<RectTransform>();
        text_Tip = image_Tip_Rect.transform.Find("Text").GetComponent<Text>();
        image_SkillRim = transform.Find("Image_SkillRim").GetComponent<Image>();
@@ -103,6 +110,9 @@
        skill = transform.Find("Image_Skill").GetComponent<ImageSkill>();
        skill.gameObject.SetActive(false);
        dragHandImg = transform.Find("ImageHand").GetComponent<RectTransform>();
        dragHandImg.gameObject.SetActive(false);
    }
    /// <summary>
@@ -111,8 +121,10 @@
    /// <param name="active"></param>
    public void SetGuideUI(bool active)
    {
        if (backgroundImg.raycastTarget != active) backgroundImg.raycastTarget = active;
        tipsUI.SetActive(active);
        if (backgroundImg.enabled != active)
            backgroundImg.enabled = active;
        if (tipsUI.activeSelf != active)
            tipsUI.SetActive(active);
    }
    //开始打印文字
@@ -143,9 +155,9 @@
            SetRimActive(true);
            AddButtonListener(towerBuyBtn, ac);
            Image btnImg = towerBuyBtn.GetComponent<Image>();
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 189, 73.5f);
            SetRimPos(towerBuyBtn);
            maskObj.ShowImmediately();
            //maskObj.ShowImmediately();
        }
        else if (currentIndex == 1)
@@ -165,12 +177,20 @@
            fire1.gameObject.SetActive(true);
            fire1.transform.Find("Image_2").gameObject.SetActive(false);
            fire1.enabled = false;
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayAppearEffect, fire1.transform.position);
        }
    }
    public void Step1_2()
    {
        fire2.gameObject.SetActive(true);
        fire2.enabled = false;
        DestoryButtonListener(towerBuyBtn);
        SetRimActive(false);
        CloseMask();
        EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayAppearEffect, fire2.transform.position);
        //RemoveButtonListener(towerBuyBtn);
    }
    /// <summary>
@@ -180,11 +200,7 @@
    public void Step2(int currentIndex)
    {
        backgroundImg.raycastTarget = true;
        RemoveButtonListener(towerBuyBtn);
        SetRimActive(false);
        CloseMask();
        //RemoveButtonListener(towerBuyBtn);
    }
    /// <summary>
@@ -194,13 +210,16 @@
    {
        if (currentIndex == 0)
        {
            backgroundImg.raycastTarget = false;
            backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
            tmpMask.enabled = true;
            SetGuideUI(false);
            SetRimPos(fire2.gameObject);
            fire1.enabled = true;
            fire2.enabled = true;
            image_Tip_Rect.gameObject.SetActive(false);
            ShowDragPath(fire2.GetStartP, fire1.GetRect);
            StartCoroutine(ShowRimTip(str));
        }
    }
@@ -209,7 +228,7 @@
    public void Step3_2(string str)
    {
        SetRimPos(fire1.gameObject);
        StartCoroutine(ShowRimTip(str));
        //StartCoroutine(ShowRimTip(str));
    }
    /// <summary>
@@ -219,18 +238,22 @@
    {
        if (currentIndex == 0)
        {
            tmpMask.enabled = false;
            SetRimActive(true);
            Image btnImg = transform.Find("Image_TowerPos").GetComponent<Image>();
            towerPos.enabled = true;
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 75, 80);
            SetRimPos(btnImg.gameObject);
            maskObj.ShowImmediately();
            //maskObj.ShowImmediately();
            ShowDragPath(fire1.GetStartP, btnImg.rectTransform);
            StartCoroutine(ShowRimTip(str));
        }
    }
    /// <summary>
    /// 第六步,拖动造塔
    /// 第六步
    /// </summary>
    public void Step5(int currentIndex, string str)
    {
@@ -238,7 +261,7 @@
        {
            CloseMask();
            SetRimActive(false);
            backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        }
    }
@@ -254,9 +277,10 @@
            GameObject go = transform.Find("Image_TowerPos2").gameObject;
            Image btnImg = go.GetComponent<Image>();
            InitRectGuidance(btnImg);
            btnImg.raycastTarget = false;
            InitRectGuidance(btnImg, 75, 80);
            SetRimPos(go);
            maskObj.ShowImmediately();
            //maskObj.ShowImmediately();
            StartCoroutine(ShowRimTip(str));
        }
    }
@@ -264,7 +288,6 @@
    //介绍水元素
    public void Step8()
    {
        backgroundImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        SetGuideUI(true);
        SetRimActive(false);
        CloseMask();
@@ -280,32 +303,37 @@
    {
        if (currentIndex == 0)
        {
            SetRimActive(true);
            image_Tip_Rect.gameObject.SetActive(false);
            //设置位置
            AddButtonListener(towerBuyBtn, ac);
            Image btnImg = towerBuyBtn.GetComponent<Image>();
            InitRectGuidance(btnImg);
            InitRectGuidance(btnImg, 189, 73.5f);
            SetRimPos(towerBuyBtn);
            maskObj.ShowImmediately();
            //maskObj.ShowImmediately();
        }
        else if (currentIndex == 1)
        {
            GameObject go = transform.Find("Image_TowerPos2").gameObject;
            Image btnImg = go.GetComponent<Image>();
            InitRectGuidance(btnImg);
            btnImg.raycastTarget = true;
            InitRectGuidance(btnImg, 75, 80);
            SetRimPos(go);
            maskObj.ShowImmediately();
            //maskObj.ShowImmediately();
            ShowDragPath(water1.GetStartP, btnImg.rectTransform);
        }
        StartCoroutine(ShowRimTip(str));
        //StartCoroutine(ShowRimTip(str));
    }
    public void Step9_1()
    {
        RemoveButtonListener(towerBuyBtn);
        water1.gameObject.SetActive(true);
        towerPos2.enabled = true;
        DestoryButtonListener(towerBuyBtn);
    }
@@ -326,25 +354,41 @@
    {
        if (currentIndex == 0)
        {
            tmpMask.enabled = true;
            tmpMask.color = new Color(1.0f, 1.0f, 1.0f, 0);
            SetGuideUI(false);
            SetRimActive(true);
            SetRimPos(skill.gameObject);
            StartCoroutine(ShowRimTip(str));
            image_Tip_Rect.gameObject.SetActive(false);
            //StartCoroutine(ShowRimTip(str));
            ShowDragPath(skill.GetStartP, image_SkillRim.rectTransform);
            InitRectGuidance(image_SkillRim, 79, 265);
        }
        else if (currentIndex == 1)
        {
            SetRimPos(image_SkillRim.gameObject);
            StartCoroutine(ShowRimTip(str));
            SetRimActive(false);
            //SetRimPos(image_SkillRim.gameObject);
            //StartCoroutine(ShowRimTip(str));
        }
    }
    public void SkillRelease()
    {
        StopShowDragPath(true);
        CloseMask();
        image_SkillRim.gameObject.SetActive(false);
        tmpMask.enabled = false;
        SetRimActive(false);
    }
    public void Step12()
    {
        image_SkillRim.gameObject.SetActive(false);
        SetGuideUI(true);
        SetRimActive(false);
    }
    #region 按钮以及提示
@@ -368,6 +412,17 @@
        RectTransform rt = target.GetComponent<RectTransform>();
        image_Rim_Rect.anchoredPosition = rt.anchoredPosition;
        image_Rim_Rect.sizeDelta = (rt.sizeDelta * rt.localScale) + rimOffset;
        if (image_Rim_Rect.sizeDelta.x > 200)
        {
            particle_1.SetActive(false);
            particle_2.SetActive(true);
        }
        else
        {
            particle_1.SetActive(true);
            particle_2.SetActive(false);
        }
        if (changeTipPos)
            image_Tip_Rect.anchoredPosition = new Vector2(image_Rim_Rect.anchoredPosition.x, image_Rim_Rect.anchoredPosition.y + 74 / 2 + image_Rim_Rect.sizeDelta.y / 2);
@@ -399,13 +454,16 @@
    /// 抠出来一个区域
    /// </summary>
    /// <param name="target"></param>
    void InitRectGuidance(Image target)
    void InitRectGuidance(Image target, float x, float y)
    {
        if (!maskObj.gameObject.activeSelf)
        {
            maskObj.gameObject.SetActive(true);
        }
        maskObj.Init(target);
        //maskObj.Init(target);
        //maskObj.ShowImmediately();
        maskObj.InitForCamera(target, x, y);
    }
    /// <summary>
@@ -439,7 +497,36 @@
        eventTriggerListener.RemoveListener(go);
    }
    private void DestoryButtonListener(GameObject go)
    {
        EventTriggerListener eventTriggerListener = EventTriggerListener.GetListener(go);
        if (eventTriggerListener != null)
            Destroy(eventTriggerListener);
    }
    #endregion
    #region 拖动效果
    private float dragTimer = 1f;
    private void ShowDragPath(Vector2 startP, RectTransform endP)
    {
        if (!dragHandImg.gameObject.activeSelf)
        {
            dragHandImg.gameObject.SetActive(true);
            dragHandImg.anchoredPosition = startP;
            dragHandImg.DOMove(endP.position, 1).SetEase(Ease.InCubic).SetLoops(-1);
        }
    }
    public void StopShowDragPath(bool isClose)
    {
        dragHandImg.DOKill();
        if (isClose)
            dragHandImg.gameObject.SetActive(false);
    }
    #endregion
}