wangguan
2020-12-10 5f6fb6dccd1330b5b0bcb2d721167a6ac062f3ad
Assets/Scripts/Guide/GuidePanel.cs
@@ -25,20 +25,23 @@
    private RectTransform image_Tip_Rect;//可以移动的提示框
    private Text text_Tip;//可以移动的提示框文字
    private Image image_SkillRim;//技能释放区域
    Vector2 rimOffset = new Vector2(30, 30);//边框要比按钮大一些
    Image tmpMask;//自身的遮罩
    GameObject offectBackground;//适配需要的黑色背景
    ImageFire1 fire1;
    ParticleSystem fire1PS1, fire1PS2;//出现的特效
    ImageFire2 fire2;//两个用来合成的火元素
    ParticleSystem fire2PS1, fire2PS2;
    ImageWater water1;
    ImageWater wood1;
    ImageSkill skill;
    ParticleSystem woodPS1, woodPS2;
    ImageTowerPos towerPos;//塔位标识
    ImageTowerPos2 towerPos2;//塔位标识
    ImageTowerPos towerPos2;//塔位标识
    GameObject towerBuyBtn;//购买宝石按钮
    Vector2 towerBuyBtnPos;
@@ -47,8 +50,9 @@
    RectTransform dragHandImg;//拖动标识手指
    Button skillBtn;//
    Vector2 skillBtnPos = new Vector2(459, 280);
    Vector2 skillBtnPos = new Vector2(459, 44.6f);
    private Image warningImg;//大波敌人来袭提示
    /// <summary>
    /// 关闭所有UI
    /// </summary>
@@ -56,9 +60,10 @@
    {
        CloseMask();
        SetRimActive(false);
        image_SkillRim.gameObject.SetActive(false);
    }
    private GuideBox boxPanel;//宝箱面板
    // Start is called before the first frame update
    void Awake()
@@ -70,7 +75,7 @@
        backgroundImg = transform.Find("Button").GetComponent<Image>();
        skillBtn = GameObject.Find("UICamera/BottomCanvas/Panel/Energy/FireSkillBtn").GetComponent<Button>();
        skillBtn = GameObject.Find("UICamera/BottomCanvas/Panel/Energy/FireSkillBg/SkillBtn").GetComponent<Button>();
        skillBtn.interactable = false;
        towerBuyBtn = GameObject.Find("UICamera/BottomCanvas/Panel/TowerBuyBtn");
        RectTransform tmpTs = towerBuyBtn.GetComponent<RectTransform>();
@@ -108,16 +113,20 @@
        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>();
        image_SkillRim.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        SetRimActive(false);
        image_SkillRim.gameObject.SetActive(false);
        fire1 = transform.Find("Image_Fire1").GetComponent<ImageFire1>();
        fire1.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        fire1PS1 = fire1.transform.Find("Huo/Particle System").GetComponent<ParticleSystem>();
        fire1PS2 = fire1.transform.Find("Huo_02/Particle System").GetComponent<ParticleSystem>();
        fire2 = transform.Find("Image_Fire2").GetComponent<ImageFire2>();
        fire2.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        fire2PS1 = fire2.transform.Find("Huo/Particle System").GetComponent<ParticleSystem>();
        fire2PS2 = fire2.transform.Find("Huo_02/Particle System").GetComponent<ParticleSystem>();
        fire1.gameObject.SetActive(false);
        fire2.gameObject.SetActive(false);
@@ -127,22 +136,25 @@
        towerPos.enabled = false;
        towerPos2 = transform.Find("Image_TowerPos2").GetComponent<ImageTowerPos2>();
        towerPos2 = transform.Find("Image_TowerPos2").GetComponent<ImageTowerPos>();
        towerPos2.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        towerPos2.enabled = false;
        water1 = transform.Find("Image_Water").GetComponent<ImageWater>();
        water1.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        water1.gameObject.SetActive(false);
        wood1 = transform.Find("Image_Wood").GetComponent<ImageWater>();
        wood1.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        woodPS1 = wood1.transform.Find("Mu/Particle System").GetComponent<ParticleSystem>();
        woodPS2 = wood1.transform.Find("Mu_02/Particle System").GetComponent<ParticleSystem>();
        skill = transform.Find("Image_Skill").GetComponent<ImageSkill>();
        skill.GetComponent<RectTransform>().anchoredPosition *= tmpScale;
        skill.gameObject.SetActive(false);
        wood1.gameObject.SetActive(false);
        dragHandImg = transform.Find("ImageHand").GetComponent<RectTransform>();
        dragHandImg.gameObject.SetActive(false);
        warningImg = transform.Find("Image_Warning").GetComponent<Image>();
        warningImg.gameObject.SetActive(false);
        boxPanel = transform.Find("BoxPanel").GetComponent<GuideBox>();
    }
@@ -157,40 +169,15 @@
        tmpOffect = GetComponent<RectTransform>().offsetMin;
        tmpOffect = new Vector2(tmpOffect.x, tmpOffect.y * 0.5f);
        image_SkillRim.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        fire1.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        fire2.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        towerPos.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        towerPos2.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        water1.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        skill.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
        wood1.GetComponent<RectTransform>().anchoredPosition -= tmpOffect;
    }
    /// <summary>
    /// 设置引导框
    /// </summary>
    /// <param name="active"></param>
    public void SetGuideUI(bool active)
    {
        if (backgroundImg.enabled != active)
            backgroundImg.enabled = active;
        if (tipsUI.activeSelf != active)
            tipsUI.SetActive(active);
    }
    //开始打印文字
    public void StartShowWord(string str, Action cb)
    {
        charForeach.StartShowWord(str, cb);
    }
    /// <summary>
    /// 立刻完成打印
    /// </summary>
    public void ShowWordImmediately()
    {
        charForeach.ShowWordImmediately();
    }
    /// <summary>
    /// 第二步,购买宝石
@@ -226,18 +213,22 @@
            fire1.gameObject.SetActive(true);
            fire1.transform.Find("Image_2").gameObject.SetActive(false);
            fire1.enabled = false;
            fire1PS1.Play();
            fire1PS2.Play();
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayAppearEffect, fire1.transform.position);
            //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayAppearEffect, fire1.transform.position);
        }
    }
    public void Step1_2()
    {
        fire2.gameObject.SetActive(true);
        fire2PS1.Play();
        fire2PS2.Play();
        fire2.enabled = false;
        DestoryButtonListener(towerBuyBtn);
        SetRimActive(false);
        CloseMask();
        EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayAppearEffect, fire2.transform.position);
        //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayAppearEffect, fire2.transform.position);
        //RemoveButtonListener(towerBuyBtn);
    }
@@ -269,7 +260,7 @@
            fire1.enabled = true;
            fire2.enabled = true;
            image_Tip_Rect.gameObject.SetActive(false);
            ShowDragPath(fire2.GetStartP, fire1.GetRect);
            //ShowDragPath(fire2.GetStartP, fire1.GetRect);
            StartCoroutine(ShowRimTip(str));
        }
    }
@@ -346,7 +337,7 @@
    /// <summary>
    /// 第九步,
    /// 第九步,购买水元素,第二步上阵
    /// </summary>
    /// <param name="str"></param>
    /// <param name="currentIndex">当前第几步</param>
@@ -369,68 +360,23 @@
            btnImg.raycastTarget = true;
            InitRectGuidance(btnImg, 75, 80, tmpOffect);
            SetRimPos(go);
            ShowDragPath(water1.GetStartP, btnImg.rectTransform);
            ShowDragPath(wood1.GetStartP, btnImg.rectTransform);
        }
    }
    public void Step9_1()
    {
        water1.gameObject.SetActive(true);
        wood1.gameObject.SetActive(true);
        woodPS1.Play();
        woodPS2.Play();
        towerPos2.enabled = true;
        DestoryButtonListener(towerBuyBtn);
    }
    //生成一个技能宝石
    public void Step10()
    {
        //SetGuideUI(false);
        image_SkillRim.gameObject.SetActive(true);
        skill.gameObject.SetActive(true);
    }
    /// <summary>
    /// 第12步,引导释放技能
    /// </summary>
    public void Step11(int currentIndex, string str)
    {
        if (currentIndex == 0)
        {
            tmpMask.enabled = true;
            tmpMask.color = new Color(1.0f, 1.0f, 1.0f, 0);
            SetGuideUI(false);
            SetRimActive(true);
            SetRimPos(skill.gameObject);
            image_Tip_Rect.gameObject.SetActive(false);
            //StartCoroutine(ShowRimTip(str));
            ShowDragPath(skill.GetStartP, image_SkillRim.rectTransform);
            InitRectGuidance(image_SkillRim, 79, 265, tmpOffect);
        }
        else if (currentIndex == 1)
        {
            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);
        towerBuyBtn.gameObject.SetActive(false);
    }
    /// <summary>
    /// 第12步,引导释放技能
    /// 第12步,交换水火塔
    /// </summary>
    public void Step11Drag(int currentIndex)
    {
@@ -447,8 +393,9 @@
            btnImg.raycastTarget = false;
            InitRectGuidance(btnImg, 75, 80, tmpOffect);
            SetRimPos(towerPos2.gameObject);
            StartCoroutine(ShowRimTip("拖动"));
            //SetRimPos(towerPos2.gameObject);
            SetRimPos(towerPos2.gameObject, new Vector2(0, 30));
            StartCoroutine(ShowRimTip("交换"));
            ShowDragPath(towerPos2.GetComponent<RectTransform>().anchoredPosition, towerPos.GetComponent<RectTransform>());
        }
@@ -458,8 +405,10 @@
            btnImg.raycastTarget = false;
            InitRectGuidance(btnImg, 75, 80, tmpOffect);
            SetRimPos(towerPos.gameObject);
            StartCoroutine(ShowRimTip("拖动"));
            //SetRimPos(towerPos.gameObject);
            SetRimPos(towerPos.gameObject, new Vector2(0, 10));
            StartCoroutine(ShowRimTip("交换"));
        }
        else if (currentIndex == 2)
@@ -470,6 +419,32 @@
        }
    }
    /// <summary>
    /// 一大波敌人
    /// </summary>
    public void Step11_End()
    {
        warningImg.color = new Color(1.0f, 1.0f, 1.0f, 0);
        warningImg.gameObject.SetActive(true);
        colorCount = 0;
        SetWarningColor();
    }
    int colorCount = 0;
    private void SetWarningColor()
    {
        if (colorCount < 4)
        {
            colorCount++;
            warningImg.DOFade(colorCount % 2, 1.0f).OnComplete(SetWarningColor);
            CommonDebugHelper.Debug($"执行了{colorCount}次");
        }
        else
        {
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateThirdWave);
            warningImg.gameObject.SetActive(false);
        }
    }
    public void Step12()
    {
@@ -490,7 +465,9 @@
        AddButtonListener(skillBtn.gameObject, ac);
        Image btnImg = skillBtn.GetComponent<Image>();
        InitRectGuidance(btnImg, 79, 79f, Vector2.one);
        SetRimPos(skillBtn.gameObject);
        //SetRimPos(skillBtn.gameObject);
        SetRimPos(skillBtn.gameObject, new Vector2(-15, -241));
        text_Tip.text = str;//动态改变长度
        StartCoroutine(ShowRimTip(str));
    }
@@ -499,8 +476,41 @@
    {
        SetGuideUI(true);
        backgroundImg.raycastTarget = true;
        RemoveButtonListener(skillBtn.gameObject);
    }
    public void FinishGuide()
    {
        towerBuyBtn.gameObject.SetActive(true);
    }
    #region 设置对话框
    /// <summary>
    /// 设置引导框
    /// </summary>
    /// <param name="active"></param>
    public void SetGuideUI(bool active)
    {
        if (backgroundImg.enabled != active)
            backgroundImg.enabled = active;
        if (tipsUI.activeSelf != active)
            tipsUI.SetActive(active);
    }
    //开始打印文字
    public void StartShowWord(string str, Action cb)
    {
        charForeach.StartShowWord(str, cb);
    }
    /// <summary>
    /// 立刻完成打印
    /// </summary>
    public void ShowWordImmediately()
    {
        charForeach.ShowWordImmediately();
    }
    #endregion
    #region 按钮以及提示
@@ -525,7 +535,7 @@
        {
            image_Rim_Rect.anchoredPosition = towerBuyBtnPos - tmpOffect;
        }
        else if (target.gameObject.name == "FireSkillBtn")
        else if (target.gameObject.name == "SkillBtn")
        {
            image_Rim_Rect.anchoredPosition = skillBtnPos - tmpOffect;
        }
@@ -548,9 +558,43 @@
        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);
            //image_Tip_Rect.anchoredPosition -= tmpOffect;
        }
    }
    /// <summary>
    /// 设置边框的大小和位置
    /// </summary>
    /// <param name="target"></param>
    private void SetRimPos(GameObject target, Vector2 offect)
    {
        SetRimActive(true);
        RectTransform rt = target.GetComponent<RectTransform>();
        if (target.gameObject.name == "TowerBuyBtn")
        {
            image_Rim_Rect.anchoredPosition = towerBuyBtnPos - tmpOffect;
        }
        else if (target.gameObject.name == "SkillBtn")
        {
            image_Rim_Rect.anchoredPosition = skillBtnPos - tmpOffect;
        }
        else
        {
            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);
        }
        image_Tip_Rect.anchoredPosition = new Vector2(image_Rim_Rect.anchoredPosition.x, image_Rim_Rect.anchoredPosition.y + 74 / 2 + image_Rim_Rect.sizeDelta.y / 2);
        image_Tip_Rect.anchoredPosition += offect;
    }
    IEnumerator ShowRimTip(string str)
@@ -572,9 +616,6 @@
    #endregion
    #region 遮罩,以及按钮添加删除事件
    /// <summary>
    /// 抠出来一个区域
    /// </summary>
@@ -585,13 +626,12 @@
        {
            maskObj.gameObject.SetActive(true);
        }
        //maskObj.Init(target);
        //maskObj.ShowImmediately();
        if (target.gameObject.name == "TowerBuyBtn")
        {
            maskObj.InitForCamera(target, towerBuyBtnPos, x, y);
        }
        else if (target.gameObject.name == "FireSkillBtn")
        else if (target.gameObject.name == "SkillBtn")
        {
            maskObj.InitForCamera(target, skillBtnPos, x, y);
        }
@@ -663,4 +703,10 @@
    #endregion
    public void OpenDialogBox(){
    }
}