yyl
2026-02-11 3f2cd27c5dfb3b450245bf1a37fc1b3414031c7c
Main/System/Battle/UIComp/TotalDamageDisplayer.cs
@@ -97,4 +97,78 @@
        battleField.battleTweenMgr.OnPlayTween(punchTween);
    }
    public async UniTask SetDamageAsync(BattleDmgInfo dmgInfo)
    {
        var battleField = BattleManager.Instance.GetBattleField(dmgInfo.battleFieldGuid);
        if (!gameObject.activeInHierarchy)
            gameObject.SetActive(true);
        if (dmgInfo == null)
            return;
        if (dmgInfo.isFirstHit)
        {
            damage = 0;
            heal = 0;
        }
        if (dmgInfo.IsType(DamageType.Recovery))
        {
            // 保持原有处理逻辑位置
            foreach (var h in dmgInfo.damageList)
            {
                heal += h;
            }
            textDamage.text = BattleUtility.DisplayDamageNum(heal, BattleConst.BattleTotalRecoverType);
            damageBackground.sprite = await UILoader.LoadSpriteAsync("Fight", "Fight1_img_83");
            if (this == null) return;
            imgTotalDesc.sprite = await UILoader.LoadSpriteAsync("Fight", "Fight1_img_80");
            if (this == null) return;
        }
        else if (dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsType(DamageType.Realdamage))
        {
            // 保持原有处理逻辑位置
            foreach (var d in dmgInfo.damageList)
            {
                damage += d;
            }
            textDamage.text = BattleUtility.DisplayDamageNum(damage, BattleConst.BattleTotalDamageType);
            imgTotalDesc.sprite = await UILoader.LoadSpriteAsync("Fight", "Fight1_img_85");
            if (this == null) return;
            damageBackground.sprite = await UILoader.LoadSpriteAsync("Fight", "Fight1_img_88");
            if (this == null) return;
        }
        else
        {
            gameObject.SetActive(false);
            return;
        }
        if (punchTween != null && punchTween.IsActive())
        {
            battleField.battleTweenMgr.OnKillTween(punchTween);
            textDamage.transform.localScale = Vector3.one;
            punchTween = null;
        }
        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);
            }
        });
        battleField.battleTweenMgr.OnPlayTween(punchTween);
    }
}