weixudong
2020-11-12 52fb8c663b1e74b2a36b79bc70a452ca73db6341
Assets/Scripts/TowerDefense/UI/EndlessBossCtrl.cs
@@ -1,6 +1,8 @@
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Core.Utilities;
/**
@@ -22,16 +24,52 @@
        /// </summary>
        public EndlessBossActionState ActionState { get; set; }
        public Image Title;
        private string titlePath = "UI/Endless/SkillTitle/";
        // Start is called before the first frame update
        private void Start()
        {
            ColorVal = 0;
            EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitle, Glint);
        }
        // Update is called once per frame
        private void Update()
        {
        }
        private void Glint(int skillType)
        {
            Title.sprite = Resources.Load<Sprite>($"{titlePath}{skillType}");
            //设置一个DOTween队列
            Sequence flashSeq = DOTween.Sequence();
            Color c = Title.color;
            c.a = 0;
            Title.color = c;
            Title.gameObject.SetActive(true);
            flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f));
            flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f));
            flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f));
            flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f));
            flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 1, 0.3f));
            flashSeq.Append(DOTween.To(() => ColorVal, (v) => ColorVal = v, 0, 0.15f));
            flashSeq.AppendCallback(() => { EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBossSkillGlintTitleCompleted); });
        }
        private float ColorVal
        {
            get { return Title.color.a; }
            set
            {
                Title.gameObject.SetActive(value != 0);
                Color c = Title.color;
                c.a = value;
                Title.color = c;
            }
        }
        /// <summary>
@@ -43,6 +81,13 @@
            if (frameName == "summonEnd")
            {
                EventCenter.Ins.BroadCast((int)EventType.EndlessBossSummonEnd);
                // 召唤动作结束后自动切换到站立状态
                ChangeState(EndlessBossActionState.Standing);
            }
            else if (frameName == "death")
            {
                BossAnimator.speed = 0;
                EventCenter.Ins.BroadCast((int)EventType.EndlessBossDeathActionEnd);
            }
        }
@@ -52,9 +97,10 @@
        /// <param name="newState"></param>
        public void ChangeState(EndlessBossActionState newState)
        {
            if (newState == ActionState) return;
            ActionState = newState;
            if (newState == EndlessBossActionState.Standing || newState == EndlessBossActionState.Summon)
                BossAnimator.speed = 1;
            BossAnimator.SetInteger("State", (int)newState);
        }
    }