|  |  | 
 |  |  | using System.Collections; | 
 |  |  | using Cysharp.Threading.Tasks; | 
 |  |  | using DG.Tweening; | 
 |  |  | using UnityEngine; | 
 |  |  | using UnityEngine.UI; | 
 |  |  | using System.Threading; | 
 |  |  |  | 
 |  |  | public class TotalDamageDisplayer : MonoBehaviour | 
 |  |  | { | 
 |  |  | 
 |  |  |  | 
 |  |  |     private Coroutine hideCoroutine; | 
 |  |  |     private int hideVersion = 0; | 
 |  |  |  | 
 |  |  |     private long damage = 0; | 
 |  |  |  | 
 |  |  |     private long heal = 0; | 
 |  |  |  | 
 |  |  |     public void SetDamage(BattleDmgInfo dmgInfo) | 
 |  |  |     { | 
 |  |  | 
 |  |  |         if (dmgInfo.IsType(DamageType.Recovery)) | 
 |  |  |         { | 
 |  |  |             // 保持原有处理逻辑位置 | 
 |  |  |             foreach (var h in dmgInfo.damageList) | 
 |  |  |             { | 
 |  |  |                 heal += h; | 
 |  |  |             } | 
 |  |  |             textDamage.text = BattleUtility.DisplayDamageNum(heal, BattleConst.BattleTotalRecoverType); | 
 |  |  |             textTotalDesc.text = "总治疗"; | 
 |  |  |         } | 
 |  |  |         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); | 
 |  |  |             textTotalDesc.text = "总伤害"; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         textDamage.transform.DOPunchScale(Vector3.one * 0.2f, 0.2f, 1).OnComplete(() => | 
 |  |  |         { | 
 |  |  |             textDamage.transform.localScale = Vector3.one; | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         if (dmgInfo.isLastHit) | 
 |  |  |         { | 
 |  |  | 
 |  |  |             hideVersion++; | 
 |  |  |             int myVersion = hideVersion; | 
 |  |  |  | 
 |  |  |             damage = 0; | 
 |  |  |             heal = 0; | 
 |  |  |  | 
 |  |  |             var battleField = BattleManager.Instance.GetBattleField(dmgInfo.battleFieldGuid); | 
 |  |  |  | 
 |  |  |             float ms = 1000f / battleField.speedRatio; | 
 |  |  |             float ms = 500f / battleField.speedRatio; | 
 |  |  |  | 
 |  |  |             hideCoroutine = StartCoroutine(HideAfterDelayCoroutine(ms, myVersion)); | 
 |  |  |  |