/// <summary> /// 更新武器的子弹信息 /// </summary> private void UpdateWeaponBullets() { if (m_Crosshair != null && m_WeaponStyle != WeaponAndCrossSight.WeaponAndCrossSightTypes.Null) { Transform powerSlider = FindComponent<Transform>(m_Crosshair, "Slider"); Animator powerSliderAnimator = FindComponent<Animator>(m_Crosshair, "Slider"); if (powerSlider == null) return; PlayerSkillProxy skillProxy = Facade.RetrieveProxy(ProxyName.PlayerSkillProxy) as PlayerSkillProxy; if (skillProxy.UsingReformer()) { powerSlider.gameObject.SetActive(false); return; } IWeapon currentWeapon = skillProxy.GetCurrentWeapon(); if (currentWeapon == null) { powerSlider.gameObject.SetActive(false); return; } WeaponPowerVO weaponVO1 = skillProxy.GetWeaponPowerOfMainPlayer(0); WeaponPowerVO weaponVO2 = skillProxy.GetWeaponPowerOfMainPlayer(1); WeaponPowerVO power = weaponVO1 != null && skillProxy.GetWeaponByUID(weaponVO1.WeaponUID) == currentWeapon ? weaponVO1 : weaponVO2; float curr = 0; float total = 0; if (power != null) { if (m_WeaponStyle == WeaponAndCrossSight.WeaponAndCrossSightTypes.MachineGun ) { curr = power.CurrentValue; total = power.MaxValue; } else if (m_WeaponStyle == WeaponAndCrossSight.WeaponAndCrossSightTypes.Missile) { foreach (var entity in m_CurrentTargetList.Values) { curr += entity.LockTimes; } total = MaxMissileCount;// skillProxy.GetCurrentBattleWeapon().GetRelativeHeightOfReticle().MissileCountInOneShot; } else if ((int)m_WeaponStyle ==(int)WeaponAndCrossSight.WeaponAndCrossSightTypes.ShotGun) { curr = power.CurrentValue; total = power.MaxValue; } } float weaponPowerRatio = total != 0 ? curr / total : 0; if (powerSliderAnimator) { if (power.ForceCooldown) powerSliderAnimator.SetInteger("State", 2); else if (weaponPowerRatio <= 0.7f) powerSliderAnimator.SetInteger("State", 0); else if (weaponPowerRatio > 0.7f) powerSliderAnimator.SetInteger("State", 1); if (m_lastFireFail) powerSliderAnimator.SetTrigger("FireFail"); } m_lastFireFail = false; RadialSlider radialSlider = powerSlider.GetComponent<RadialSlider>(); if(radialSlider) { radialSlider.FillAmount = weaponPowerRatio; return; } BulletSlider bulletSlider = powerSlider.GetComponent<BulletSlider>(); if(bulletSlider) { bulletSlider.BulletCount = (int)total; bulletSlider.FillAmount = weaponPowerRatio; return; } Slider commonSlider = powerSlider.GetComponent<Slider>(); if(commonSlider) { commonSlider.minValue = 0; commonSlider.maxValue = 1; commonSlider.value = weaponPowerRatio; return; } } }