yyl
5 天以前 ff0163176f59bdd935543b23fabd2ea777603f4a
Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -94,13 +94,20 @@
        long curHp = battleObject.teamHero.curHp;
        long maxHp = battleObject.teamHero.maxHp;
        
        // 记录设置前的护盾值
        float oldShield1Value = sliderShield1.value;
        float oldShield2Value = sliderShield2.value;
        // 护盾1的值 = min(当前血量 + 护盾值, maxHp) / maxHp
        float shield1Value = maxHp > 0 ? Mathf.Min((float)(curHp + shieldValue), (float)maxHp) / (float)maxHp : 0;
        // 护盾2的值 = max(当前血量 + 护盾值 - maxHp, 0) / maxHp
        float shield2Value = maxHp > 0 ? Mathf.Max((float)(curHp + shieldValue - maxHp), 0f) / (float)maxHp : 0;
        
        sliderShield1.value = shield1Value;
        sliderShield2.value = shield2Value;
        sliderShield1.value = shieldValue > 0 ? shield1Value : 0;
        sliderShield2.value = shieldValue > maxHp ? shield2Value : 0;
        // 打印设置护盾时的状态
        // Debug.LogError($"[BattleHeroInfoBar.SetBattleObject] 设置护盾 - curHp: {curHp}, shieldValue: {shieldValue}, maxHp: {maxHp}, shield1前: {oldShield1Value}, shield1后: {shield1Value}, shield2前: {oldShield2Value}, shield2后: {shield2Value}");
    }
    
    public void SetActive(bool active)
@@ -131,13 +138,23 @@
        long curHp = battleObject.teamHero.curHp;
        long maxHp = battleObject.teamHero.maxHp;
        
        // 记录设置前的护盾值
        float oldShield1Value = sliderShield1.value;
        float oldShield2Value = sliderShield2.value;
        // 护盾1的值 = min(当前血量 + 护盾值, maxHp) / maxHp
        float shield1Value = maxHp > 0 ? Mathf.Min((float)(curHp + shieldValue), (float)maxHp) / (float)maxHp : 0;
        // 护盾2的值 = max(当前血量 + 护盾值 - maxHp, 0) / maxHp
        float shield2Value = maxHp > 0 ? Mathf.Max((float)(curHp + shieldValue - maxHp), 0f) / (float)maxHp : 0;
        
        sliderShield1.value = shield1Value;
        sliderShield2.value = shield2Value;
        sliderShield1.value = shieldValue > 0 ? shield1Value : 0;
        sliderShield2.value = shieldValue > maxHp ? shield2Value : 0;
        UpdateHP(curHp, curHp, maxHp, false);
        // 打印刷新护盾时的状态
        // Debug.LogError($"[BattleHeroInfoBar.RefreshBuff] 设置护盾 - curHp: {curHp}, shieldValue: {shieldValue}, maxHp: {maxHp}, shield1前: {oldShield1Value}, shield1后: {shield1Value}, shield2前: {oldShield2Value}, shield2后: {shield2Value}");
    }
    
    /// <summary>