yyl
2025-07-03 a84c7d64980873ce50f9f5beb18f790a4b79045a
Main/System/Battle/BattleHUDWin.cs
@@ -26,6 +26,10 @@
    public Transform buffLabelNode;
    private BattleField battleField;
    private List<DamageContent> damageContentList = new List<DamageContent>();
    // 生命周期
    protected override void InitComponent()
    {
@@ -60,6 +64,8 @@
    protected override void OnClose()
    {
        base.OnClose();
        battleField.OnBattlePause -= OnBattlePause;
        battleField = null;
    }
    protected override void NextFrameAfterOpen()
@@ -72,13 +78,20 @@
        base.CompleteClose();
    }
    private void RemoveDamageContent(DamageContent content)
    {
        damageContentList.Remove(content);
        damagePrefabPool.Release(content.gameObject);
    }
    private void OnDamageTaken(BattleObject bo, List<int> damageList)
    {
        GameObject damageContent = damagePrefabPool.Request();
        DamageContent content = damageContent.GetComponent<DamageContent>();
        damageContent.transform.SetParent(damageNode, false);
        damageContent.transform.localPosition = new Vector3(damageContent.transform.localPosition.x, damageContent.transform.localPosition.y, 0);
        content.SetDamage(damageList, () => damagePrefabPool.Release(damageContent));
        content.SetDamage(damageList, () => RemoveDamageContent(content));
        damageContentList.Add(content);
        // heroGo 的 parent 作为参考节点
        var heroGo = bo.heroGo;
@@ -116,4 +129,35 @@
    {
    }
    public void SetBattleField(BattleField _battleField)
    {
        if (battleField != null)
        {
            battleField.OnBattlePause -= OnBattlePause;
        }
        battleField = _battleField;
        battleField.OnBattlePause += OnBattlePause;
    }
    private void OnBattlePause(bool isPause)
    {
        //  游戏暂停
        if (isPause)
        {
            foreach (var content in damageContentList)
            {
                content.Stop();
            }
        }
        //  游戏恢复
        else
        {
            foreach (var content in damageContentList)
            {
                content.Resume();
            }
        }
    }
}