yyl
2025-12-09 821b91fce3202521edd37897b2023e007fa92df1
125 战斗 伤害显示延长展示时间(scale1.5s delay1.5s)
2个文件已修改
47 ■■■■ 已修改文件
Main/System/Battle/Define/BattleDmgInfo.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/UIComp/TotalDamageDisplayer.cs 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Define/BattleDmgInfo.cs
@@ -68,6 +68,8 @@
    public bool isImmune = false;
    public bool isLastHit = false;
    public bool isFirstHit = false;
    public List<BattleDmg> targetDamageList = new List<BattleDmg>();
    public List<BattleDmg> casterDamageList = new List<BattleDmg>();
@@ -81,6 +83,7 @@
        this.battleHurtParam = battleHurtParam;
        this.isCasterView = isCasterView;
        this.isLastHit = battleHurtParam.hitIndex >= battleHurtParam.skillConfig.DamageDivide.Length - 1;
        this.isFirstHit = battleHurtParam.hitIndex == 0;
        
        m_rawAttackType = hurt == null ? 0 : hurt.AttackTypes;
Main/System/Battle/UIComp/TotalDamageDisplayer.cs
@@ -14,6 +14,14 @@
    private long heal = 0;
    public const float scaleDuration = 1.5f;
    public const float delayCloseDuration = 1.5f;
    public static readonly Vector3 scalePunch = new Vector3(0.4f, 0.4f, 0.4f);
    private Sequence punchTween = null;
    public void SetDamage(BattleDmgInfo dmgInfo)
    {
        var battleField = BattleManager.Instance.GetBattleField(dmgInfo.battleFieldGuid);
@@ -23,6 +31,12 @@
        if (dmgInfo == null)
            return;
        if (dmgInfo.isFirstHit)
        {
            damage = 0;
            heal = 0;
        }
        if (dmgInfo.IsType(DamageType.Recovery))
        {
@@ -48,23 +62,39 @@
        }
        else
        {
            textDamage.text =BattleUtility.DisplayDamageNum(0, BattleConst.BattleTotalDamageType);
            imgTotalDesc.sprite = UILoader.LoadSprite("Fight", "Fight1_img_85");
            damageBackground.sprite = UILoader.LoadSprite("Fight", "Fight1_img_88");
            gameObject.SetActive(false);
            return;
        }
        // else
        // {
        //     textDamage.text =BattleUtility.DisplayDamageNum(0, BattleConst.BattleTotalDamageType);
        //     imgTotalDesc.sprite = UILoader.LoadSprite("Fight", "Fight1_img_85");
        //     damageBackground.sprite = UILoader.LoadSprite("Fight", "Fight1_img_88");
        // }
        if (punchTween != null && punchTween.IsActive())
        {
            battleField.battleTweenMgr.OnKillTween(punchTween);
            textDamage.transform.localScale = Vector3.one;
            punchTween = null;
        }
        var tween = textDamage.transform.DOPunchScale(Vector3.one * 0.2f, 0.8f / battleField.speedRatio, 1).OnComplete(() =>
        punchTween = DOTween.Sequence();
        var tween1 = textDamage.transform.DOPunchScale(scalePunch, scaleDuration / battleField.speedRatio, 1);
        punchTween.Append(tween1);
        //  播放结束后 延迟1.5秒再消失
        var tween2 = DOVirtual.DelayedCall(delayCloseDuration / battleField.speedRatio, () => { });
        punchTween.Append(tween2);
        punchTween.OnComplete(() =>
        {
            textDamage.transform.localScale = Vector3.one;
            if (dmgInfo.isLastHit)
            {
                gameObject.SetActive(false);
                damage = 0;
                heal = 0;
            }
        });
        battleField.battleTweenMgr.OnPlayTween(tween);
        battleField.battleTweenMgr.OnPlayTween(punchTween);
    }
}