using System.Collections; using System.Collections.Generic; using UnityEngine; public class Shoot122Manager : MonoBehaviour { public static Shoot122Manager Instance { get; private set; } public Animation animation_122; //public GameObject rawImage_122; public GameObject penguan; public List chooseShoot=new List(); public Dictionary choosedValue=new Dictionary(); public Control3DModelBt 保险; public bool isShootReady; public RotationController Rotate122; public Control3DModelBt autoBtn1; public Control3DModelBt autoBtn2; public Control3DModelBt usedOpen; public bool diaoPaoOver = false; public bool isCheck; //是否进行了装弹检测 public bool isShootClear; //是否已经全部发射完毕 public List shootMsgs = new List(); public Transform animationParent; private void Awake() { Instance = this; isShoot = false; isShootReady = false; allCount = 40; isCheck = false; isShootClear = false; for (int i = 0; i <= 40; i++) { AddOrUpdate(i.ToString(), 0); //默认有弹 } shotType = "20Km杀爆弹"; } public bool isShoot; // Start is called before the first frame update private void Update() { if (autoBtn1.Get3DBtnState() && autoBtn2.Get3DBtnState() && usedOpen.Get3DBtnState()) { isShootReady = true; } else { isShootReady = false; } } string shotType; public void UpdateType(string value) { shotType = value; } public void AddOrUpdate(string key, int value) { if (choosedValue.ContainsKey(key)) { // 键已存在,更新值 choosedValue[key] = value; } else { // 键不存在,添加新元素 choosedValue.Add(key, value); } if (GameObject.FindObjectOfType() != null) { FindObjectOfType().SetOneState(int.Parse(key), value); } } public bool RemoveByKey(string key) { if (choosedValue.ContainsKey(key)) { choosedValue.Remove(key); return true; // 删除成功 } return false; // key不存在,删除失败 } public int allCount; //当前装弹数量 public void Jifa() { if (isShoot|| !保险.isInit) return; //rawImage_122.SetActive(true); AnimationModel.instance.Show122PZ(); isShoot = true; animation_122.Play(); StartCoroutine(JiFaIe()); //for (int i = 0; i < chooseShoot.Count; i++) //{ // //animationParent.Find(i.ToString()).GetComponent().Play(); //} } IEnumerator JiFaIe() { for (int i = 0; i < chooseShoot.Count; i++) { if (choosedValue.ContainsKey(chooseShoot[i])) { animationParent.Find(chooseShoot[i]).GetComponent().Play(); animationParent.Find(chooseShoot[i]).GetChild(0).GetChild(1).GetChild(0).gameObject.SetActive(true); //出现激发特效 yield return new WaitForSeconds(0.1f); //RemoveByKey(chooseShoot[i].ToString()); if (GameObject.FindObjectOfType() != null) { FindObjectOfType().SetOneState(int.Parse( chooseShoot[i]), 3); } choosedValue.Remove(chooseShoot[i].ToString()); //从炮弹池中移除 } } FindObjectOfType().OnJiFaOver(); allCount -= chooseShoot.Count; ShootMsg s=new ShootMsg(); s.shotCount = chooseShoot.Count; s.shotTime = 0.5f; s.shotType = shotType; s.shotHigh = "0.5"; shootMsgs.Add(s); if (allCount <= 0) isShootClear = true; else isShoot = false; chooseShoot.Clear(); } public void DiaoPaoOver() { if (Manager122Base.instance != null) Manager122Base.instance.Show122DwonMsg("高低到位,方位到位"); } public LightState lianjieqileft; public LightState lianjieqiRight; /// /// 控制左右连接器高亮 /// /// public void LianJieQiState(bool state) { if (state) { lianjieqileft.OpenLight(); lianjieqiRight.OpenLight(); } else { lianjieqileft.CloseLight(); lianjieqiRight.CloseLight(); } } public LightState leftLock; public LightState rightLock; public LightState 千斤顶; public LightState 行军固定器; /// /// 模型上用炮按钮点击 /// public void UseClick() { leftLock.OpenLight(); rightLock.OpenLight(); 千斤顶.OpenLight(); 行军固定器.OpenLight(); } /// /// 模型上收炮点击 /// public void UnUseClick() { leftLock.OpenLight(); rightLock.OpenLight(); 千斤顶.CloseLight(); 行军固定器.CloseLight(); lianjieqileft.OpenLight(); lianjieqiRight.OpenLight(); } } public class ShootMsg { public int shotCount; public string shotType; public float shotTime; public string shotHigh = "0"; }