BulletManager.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. private int bulletCount = 9;
  10. public GameObject parent ;
  11. public int getBulletCount {
  12. get {
  13. return bulletCount;
  14. }
  15. }
  16. void Start()
  17. {
  18. ResetBullets();
  19. }
  20. public void FireBullet()
  21. {
  22. if (bulletCount > 0)
  23. {
  24. bulletCount--;
  25. UpdateBullets();
  26. }
  27. }
  28. public void ResetBullets()
  29. {
  30. bulletCount = 9;
  31. UpdateBullets();
  32. }
  33. public bool bulletZero() {
  34. if (getBulletCount == 0) {
  35. Create(parent.transform);
  36. //暂时自动刷新,接入协议后修改效果
  37. ResetBullets();
  38. return true;
  39. }
  40. return false;
  41. }
  42. private void UpdateBullets()
  43. {
  44. for (int i = 0; i < bulletImages.Length; i++)
  45. {
  46. if (i < bulletCount)
  47. {
  48. bulletImages[i].sprite = bulletSprite;
  49. }
  50. else
  51. {
  52. bulletImages[i].sprite = emptyBulletSprite;
  53. }
  54. }
  55. }
  56. static List<GameObject> bulletNumber = new();
  57. public static void Create(Transform parentTran)
  58. {
  59. //清空对象
  60. for (int i = bulletNumber.Count - 1; i >= 0; i--)
  61. {
  62. Destroy(bulletNumber[i].gameObject);
  63. bulletNumber.RemoveAt(i);
  64. }
  65. GameObject o = Instantiate(Resources.Load<GameObject>("Common/TipBulletNumber"));
  66. // 重置Transform属性
  67. o.transform.SetParent(parentTran);
  68. // 获取RectTransform组件
  69. RectTransform rectTransform = o.GetComponent<RectTransform>();
  70. // 设置相对于锚点的偏移位置
  71. rectTransform.anchoredPosition = new Vector2(0, 120);
  72. rectTransform.localRotation = Quaternion.identity;
  73. rectTransform.localScale = Vector3.one;
  74. //o.GetComponentInChildren<Text>().text = number.ToString($"f{CommonConfig.ringsPrecision}");
  75. bulletNumber.Add(o);
  76. }
  77. }