HPBarPanel.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. namespace WildAttack
  6. {
  7. public class HPBarPanel : MonoBehaviour
  8. {
  9. #region Members
  10. [SerializeField] Transform _HPBarTrans;
  11. //[SerializeField] Text _textWallHp;
  12. private Image addHp;
  13. private Image subHp;
  14. private Image hpBar;
  15. [SerializeField] private Text textHp;
  16. #endregion
  17. #region Lifecycle
  18. // Start is called before the first frame update
  19. void Start()
  20. {
  21. ResetHpBar();
  22. }
  23. // Update is called once per frame
  24. void Update()
  25. {
  26. RefreshHp();
  27. }
  28. #endregion
  29. #region Functions
  30. /// <summary>
  31. /// 血条相关
  32. /// </summary>
  33. public void AddHp()
  34. {
  35. addHp.fillAmount = (float)GameMananger.GetInstance().HP / GameMananger.GetInstance().HPMax;
  36. }
  37. public void SubHp()
  38. {
  39. hpBar.fillAmount = (float)GameMananger.GetInstance().HP / GameMananger.GetInstance().HPMax;
  40. addHp.fillAmount = (float)GameMananger.GetInstance().HP / GameMananger.GetInstance().HPMax;
  41. }
  42. /// <summary>
  43. /// 重置
  44. /// </summary>
  45. public void ResetHpBar()
  46. {
  47. if (hpBar == null)
  48. {
  49. addHp = _HPBarTrans.Find("addHp").GetComponent<Image>();
  50. hpBar = _HPBarTrans.Find("hpBar").GetComponent<Image>();
  51. subHp = _HPBarTrans.Find("subHp").GetComponent<Image>();
  52. }
  53. hpBar.fillAmount = (float)GameMananger.GetInstance().HP / GameMananger.GetInstance().HPMax;
  54. addHp.fillAmount = (float)GameMananger.GetInstance().HP / GameMananger.GetInstance().HPMax;
  55. subHp.fillAmount = (float)GameMananger.GetInstance().HP / GameMananger.GetInstance().HPMax;
  56. }
  57. /// <summary>
  58. /// 血条更新 (表现
  59. /// </summary>
  60. private void RefreshHp()
  61. {
  62. textHp.text = $"{GameMananger.GetInstance().HP}/{GameMananger.GetInstance().HPMax}";
  63. if (hpBar.fillAmount < addHp.fillAmount)
  64. {
  65. hpBar.fillAmount += 0.002f;
  66. subHp.fillAmount = hpBar.fillAmount;
  67. }
  68. if (subHp.fillAmount > hpBar.fillAmount)
  69. {
  70. subHp.fillAmount -= 0.002f;
  71. }
  72. }
  73. public void SetProcessInfoActive(bool active)
  74. {
  75. _HPBarTrans.GetComponent<CanvasGroup>().alpha = active ? 1 : 0;
  76. textHp.gameObject.SetActive(active);
  77. }
  78. #endregion
  79. }
  80. }