using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BulletManager : MonoBehaviour { public Image[] bulletImages; public Sprite bulletSprite; public Sprite emptyBulletSprite; //默认子弹数量 public int defaultBulletCount = 15; private int bulletCount; public GameObject parent ; [SerializeField] [Tooltip("生成子弹不足提示的位置是否在是正中心")] bool bCenter = false; [SerializeField] [Tooltip("生成子弹不足提示的字体颜色")] Color bulletTipColor; //射击数 private int numberOfShotsFired = 0; public int getBulletCount { get { return bulletCount; } } void Awake() { numberOfShotsFired = 0; ResetBullets(); } public void FireBullet() { if (bulletCount > 0) { bulletCount--; UpdateBullets(); //记录射击的总数 numberOfShotsFired++; } } public void ResetBullets() { bulletCount = defaultBulletCount; UpdateBullets(); } //是否判断射击完使用 public bool NumberOfShotsFired() { return numberOfShotsFired >= defaultBulletCount ? true : false; } public bool bulletZero() { if (getBulletCount == 0) { Create(parent.transform,bCenter, bulletTipColor); //暂时自动刷新,接入协议后修改效果 //ResetBullets(); return true; } return false; } private void UpdateBullets() { for (int i = 0; i < bulletImages.Length; i++) { if (i < bulletCount) { bulletImages[i].sprite = bulletSprite; } else { bulletImages[i].sprite = emptyBulletSprite; } } } static List bulletNumber = new(); public static void Create(Transform parentTran,bool centerPos,Color color) { //清空对象 for (int i = bulletNumber.Count - 1; i >= 0; i--) { Destroy(bulletNumber[i].gameObject); bulletNumber.RemoveAt(i); } GameObject o = Instantiate(Resources.Load("Common/TipBulletNumber")); // 重置Transform属性 o.transform.SetParent(parentTran); o.GetComponent().SetOutTipColor(color); // 获取RectTransform组件 RectTransform rectTransform = o.GetComponent(); // 设置相对于锚点的偏移位置 if (centerPos) { rectTransform.anchorMin = new Vector2(0.5f, 0.5f); rectTransform.anchorMax = new Vector2(0.5f, 0.5f); //rectTransform.anchoredPosition = new Vector2(0, rectTransform.rect.height / 2); rectTransform.anchoredPosition = new Vector2(0, 0); rectTransform.localRotation = Quaternion.identity; rectTransform.localScale = Vector3.one; } else { rectTransform.anchoredPosition = new Vector2(0, 120); rectTransform.localRotation = Quaternion.identity; rectTransform.localScale = Vector3.one; } //o.GetComponentInChildren().text = number.ToString($"f{CommonConfig.ringsPrecision}"); bulletNumber.Add(o); } }