| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 | 
							- using System.Collections.Generic;
 
- using UnityEngine;
 
- using UnityEngine.SceneManagement;
 
- 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 Update()
 
-     {
 
-         if (Input.GetKeyDown(KeyCode.Q))
 
-         {
 
-             if (bulletZero()) return;
 
-             FireBullet();
 
-         }
 
-     }
 
-     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(PlayerType playerType = PlayerType.FirstPlayer) {
 
-         if (getBulletCount == 0) {
 
-             if (SceneManager.GetActiveScene().name == "InfraredGameDouble")
 
-             {
 
-                 //���ҷ�����ʾ
 
-                 Create(parent.transform, bCenter, bulletTipColor, false, playerType == PlayerType.FirstPlayer? - Screen.width / 4f : Screen.width / 4f);
 
-             }
 
-             else {
 
-                 Create(parent.transform, bCenter, bulletTipColor);
 
-             }
 
-            
 
-             //��ʱ�Զ�ˢ��,����Э�����Ч��
 
-             //ResetBullets();
 
-             return true;
 
-         }
 
-         return false;
 
-     }
 
-     /// <summary>
 
-     /// ����Ҫ�Զ�ɾ��
 
-     /// </summary>
 
-     /// <returns></returns>
 
-     public bool bulletZeroNotDelete() {
 
-         if (getBulletCount == 0)
 
-         {
 
-             //�����Զ�ɾ��
 
-             Create(parent.transform, bCenter, bulletTipColor,true);
 
-             return true;
 
-         }
 
-         return false;
 
-     }
 
-     /// <summary>
 
-     /// �ⲿ���ã��ֶ�ɾ������ TipBulletNumber
 
-     /// </summary>
 
-     public static void RemoveBulletExternally()
 
-     {
 
-         for (int i = bulletNumber.Count - 1; i >= 0; i--)
 
-         {
 
-             if (bulletNumber[i] != null)
 
-             {
 
-                 bulletNumber[i].Remove();
 
-             }
 
-         }
 
-         bulletNumber.Clear();
 
-     }
 
-     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<TipBulletNumber> bulletNumber = new();
 
-     public static void Create(Transform parentTran,bool centerPos,Color color, bool disableAutoDelete = false ,float posX = 0)
 
-     {
 
-         //��ն���
 
-         //for (int i = bulletNumber.Count - 1; i >= 0; i--)
 
-         //{
 
-         //    Destroy(bulletNumber[i].gameObject);
 
-         //    bulletNumber.RemoveAt(i);
 
-         //}
 
-         RemoveBulletExternally();
 
-         GameObject o = Instantiate(Resources.Load<GameObject>("Common/TipBulletNumber"));
 
-         // ����Transform����
 
-         o.transform.SetParent(parentTran);
 
-         TipBulletNumber tip = o.GetComponent<TipBulletNumber>();
 
-         tip.SetOutTipColor(color);
 
-         tip.SetDisableAutoDelete(disableAutoDelete); // �����Ƿ�����Զ�ɾ��
 
-         bulletNumber.Add(tip);
 
-         // ��ȡRectTransform���
 
-         RectTransform rectTransform = o.GetComponent<RectTransform>();
 
-         // ���������ê���ƫ��λ��
 
-         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 {
 
-             float _posX = 0;
 
-             RectTransform imageRect = o.transform.Find("Image").GetComponent<RectTransform>();
 
-             // 强制刷新它的布局
 
-             LayoutRebuilder.ForceRebuildLayoutImmediate(imageRect);
 
-             float _childX = imageRect.rect.width; 
 
-             if (posX > 0)
 
-             {
 
-                 _posX = posX - _childX * 0.5f - 80;
 
-             }
 
-             else if(posX < 0) {
 
-                 _posX = -(Mathf.Abs(posX) - _childX * 0.5f - 80);
 
-             }
 
-             rectTransform.anchoredPosition = new Vector2(_posX, 120);
 
-             rectTransform.localRotation = Quaternion.identity;
 
-             rectTransform.localScale = Vector3.one;
 
-         }
 
-   
 
-         //o.GetComponentInChildren<Text>().text = number.ToString($"f{CommonConfig.ringsPrecision}");
 
-     }
 
- }
 
 
  |