| using System.Collections; | 
| using System.Collections.Generic; | 
| using DG.Tweening; | 
| using UnityEngine.UI; | 
| using UnityEngine; | 
|   | 
| public class SkillTips : MonoBehaviour | 
| { | 
|     public const float tweenDuration = 0.5f; | 
|   | 
|     public const float delayDuration = 0.6f; | 
|   | 
|     public const float beginingX = 400f; | 
|   | 
|     [SerializeField]public Image imgIcon; | 
|   | 
|     [SerializeField]public Image imgSkillName; | 
|   | 
|     [SerializeField] public Image imageBg; | 
|   | 
|     private Tween tween1; | 
|     private Tween tween2; | 
|     private Tween tween3; | 
|   | 
|     public void PlayMotion(BattleField battleField, bool isRed, TeamHero teamHero, SkillConfig skillConfig) | 
|     { | 
|         if (teamHero == null || skillConfig == null) | 
|         { | 
|             return; | 
|         } | 
|   | 
|         if (skillConfig.FuncType != 2) | 
|             return; | 
|   | 
|         KillAllTweens(); | 
|   | 
|         imgIcon.sprite = UILoader.LoadSprite("HeroHead", teamHero.skinConfig.SquareIcon); | 
|         imgSkillName.sprite = UILoader.LoadSprite("SkillNameIcon", skillConfig.SkillTipsName); | 
|         imgSkillName.SetNativeSize(); | 
|         // 保证开始时所有图片为可见(alpha=1) | 
|         if (imageBg != null) { var c = imageBg.color; c.a = 1f; imageBg.color = c; } | 
|         if (imgIcon != null) { var c = imgIcon.color; c.a = 1f; imgIcon.color = c; } | 
|         if (imgSkillName != null) { var c = imgSkillName.color; c.a = 1f; imgSkillName.color = c; } | 
|   | 
|         gameObject.SetActive(true); | 
|         float posY = transform.localPosition.y; | 
|         transform.localPosition = isRed ? new Vector3(-beginingX, posY, 0f) : new Vector3(beginingX, posY, 0f); | 
|         tween1 = transform.DOLocalMoveX(0, tweenDuration / battleField.speedRatio, false).SetEase(Ease.Linear).OnComplete(() => | 
|         { | 
|             tween1 = null; | 
|             tween3 = DOVirtual.DelayedCall(delayDuration / battleField.speedRatio, () => | 
|             { | 
|                 tween3 = null; | 
|   | 
|                 // tween2 改为做减淡(对 imageBg、imgIcon、imgSkillName 同步淡出) | 
|                 float fadeDuration = tweenDuration / battleField.speedRatio; | 
|                 Sequence seq = DOTween.Sequence(); | 
|                 if (imageBg != null) | 
|                     seq.Join(imageBg.DOFade(0f, fadeDuration).SetEase(Ease.InQuad)); | 
|                 if (imgIcon != null) | 
|                     seq.Join(imgIcon.DOFade(0f, fadeDuration).SetEase(Ease.InQuad)); | 
|                 if (imgSkillName != null) | 
|                     seq.Join(imgSkillName.DOFade(0f, fadeDuration).SetEase(Ease.InQuad)); | 
|   | 
|                 seq.OnComplete(() => | 
|                 { | 
|                     tween2 = null; | 
|                     // 恢复图片 alpha,保证下次显示时可见 | 
|                     if (imageBg != null) { var cc = imageBg.color; cc.a = 1f; imageBg.color = cc; } | 
|                     if (imgIcon != null) { var cc = imgIcon.color; cc.a = 1f; imgIcon.color = cc; } | 
|                     if (imgSkillName != null) { var cc = imgSkillName.color; cc.a = 1f; imgSkillName.color = cc; } | 
|   | 
|                     transform.localPosition = isRed ? new Vector3(-beginingX, posY, 0f) : new Vector3(beginingX, posY, 0f); | 
|                     gameObject.SetActive(false); | 
|                 }); | 
|   | 
|                 tween2 = seq; | 
|                 battleField.battleTweenMgr.OnPlayTween(tween2); | 
|             }); | 
|             battleField.battleTweenMgr.OnPlayTween(tween3); | 
|         }); | 
|         battleField.battleTweenMgr.OnPlayTween(tween1); | 
|     } | 
|      | 
|     public void KillAllTweens() | 
|     { | 
|         if (tween1 != null) | 
|         { | 
|             tween1.Kill(); | 
|             tween1 = null; | 
|         } | 
|         if (tween2 != null) | 
|         { | 
|             tween2.Kill(); | 
|             tween2 = null; | 
|         } | 
|         if (tween3 != null) | 
|         { | 
|             tween3.Kill(); | 
|             tween3 = null; | 
|         } | 
|   | 
|         // 被强制停止时也需要恢复 alpha | 
|         if (imageBg != null) { var cc = imageBg.color; cc.a = 1f; imageBg.color = cc; } | 
|         if (imgIcon != null) { var cc = imgIcon.color; cc.a = 1f; imgIcon.color = cc; } | 
|         if (imgSkillName != null) { var cc = imgSkillName.color; cc.a = 1f; imgSkillName.color = cc; } | 
|     } | 
|   | 
| } |