BulletManager.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. public class BulletManager : MonoBehaviour
  5. {
  6. public Image[] bulletImages;
  7. public Sprite bulletSprite;
  8. public Sprite emptyBulletSprite;
  9. //默认子弹数量
  10. public int defaultBulletCount = 15;
  11. private int bulletCount;
  12. public GameObject parent ;
  13. //射击数
  14. private int numberOfShotsFired = 0;
  15. public int getBulletCount {
  16. get {
  17. return bulletCount;
  18. }
  19. }
  20. void Start()
  21. {
  22. numberOfShotsFired = 0;
  23. ResetBullets();
  24. }
  25. public void FireBullet()
  26. {
  27. if (bulletCount > 0)
  28. {
  29. bulletCount--;
  30. UpdateBullets();
  31. //记录射击的总数
  32. numberOfShotsFired++;
  33. }
  34. }
  35. public void ResetBullets()
  36. {
  37. bulletCount = defaultBulletCount;
  38. UpdateBullets();
  39. }
  40. //是否判断射击完使用
  41. public bool NumberOfShotsFired() {
  42. return numberOfShotsFired >= defaultBulletCount ? true : false;
  43. }
  44. public bool bulletZero() {
  45. if (getBulletCount == 0) {
  46. Create(parent.transform);
  47. //暂时自动刷新,接入协议后修改效果
  48. //ResetBullets();
  49. return true;
  50. }
  51. return false;
  52. }
  53. private void UpdateBullets()
  54. {
  55. for (int i = 0; i < bulletImages.Length; i++)
  56. {
  57. if (i < bulletCount)
  58. {
  59. bulletImages[i].sprite = bulletSprite;
  60. }
  61. else
  62. {
  63. bulletImages[i].sprite = emptyBulletSprite;
  64. }
  65. }
  66. }
  67. static List<GameObject> bulletNumber = new();
  68. public static void Create(Transform parentTran)
  69. {
  70. //清空对象
  71. for (int i = bulletNumber.Count - 1; i >= 0; i--)
  72. {
  73. Destroy(bulletNumber[i].gameObject);
  74. bulletNumber.RemoveAt(i);
  75. }
  76. GameObject o = Instantiate(Resources.Load<GameObject>("Common/TipBulletNumber"));
  77. // 重置Transform属性
  78. o.transform.SetParent(parentTran);
  79. // 获取RectTransform组件
  80. RectTransform rectTransform = o.GetComponent<RectTransform>();
  81. // 设置相对于锚点的偏移位置
  82. rectTransform.anchoredPosition = new Vector2(0, 120);
  83. rectTransform.localRotation = Quaternion.identity;
  84. rectTransform.localScale = Vector3.one;
  85. //o.GetComponentInChildren<Text>().text = number.ToString($"f{CommonConfig.ringsPrecision}");
  86. bulletNumber.Add(o);
  87. }
  88. }