yyl
4 天以前 eba6c39cc97723bfe2056e2eac2c2d1cf59ab12a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using UnityEngine.UI;
using UnityEngine;
 
public class SkillTips : MonoBehaviour
{
    public const float tweenDuration = 1f;
 
    public const float delayDuration = 0.4f;
 
    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);
 
        // 保证开始时所有图片为可见(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;
                    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;
        }
    }
 
}