using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using AX.MessageSystem; using System; public class BagPanel : ResourceLoadPanel { private Transform content; private GameObject equipItem; private const string imagepath = "UI/EquipImage/"; public GameObject selectFire; // Use this for initialization void Awake() { content = transform.Find("Main/Viewport/Content"); equipItem = Resources.Load("UI/EquipUI/BagItem") as GameObject; MessageDispatcher.AddListener("BagChaneg", BagInfoChange); // MessageDispatcher.AddListener("RADIO_SELECTED_COMMAND", ChangeSelect);//单选选中处理 MessageDispatcher.AddListener("SelectChange", selectchange); } private void OnEnable() { MessageDispatcher.AddListener("BagChaneg", BagInfoChange); // MessageDispatcher.AddListener("RADIO_SELECTED_COMMAND", ChangeSelect);//单选选中处理 //每次打开背包根据选择消防员加载数据 if (content.childCount > 0) { Empty(); } if (SelectedObjs.selectedCharacters[0] != null) { Load(SelectedObjs.selectedCharacters[0].GetComponent().EquipList); } } private void OnDisable() { //隐藏背包时清空 Empty(); MessageDispatcher.RemoveListener("BagChaneg", BagInfoChange); } private void OnDestroy() { MessageDispatcher.RemoveListener("BagChaneg", BagInfoChange); // MessageDispatcher.RemoveListener("RADIO_SELECTED_COMMAND", ChangeSelect);//单选选中处理 MessageDispatcher.RemoveListener("SelectChange", selectchange); } private void selectchange(IMessage obj) { gameObject.SetActive(false); } private void Empty() { for (int i = 0; i < content.childCount; i++) { Destroy(content.GetChild(i).gameObject); } } private void Load(List Equipdata) { for (int i = 0; i < Equipdata.Count; i++) { //原来没有,新添 if (!content.Find(Equipdata[i].Name)) { if (!Equipdata[i].IsSelectMore||(Equipdata[i].IsSelectMore&& Equipdata[i].Number>0)) { GameObject item = Instantiate(equipItem, content); item.name = Equipdata[i].Name; //设置名称 item.transform.Find("Name").GetComponent().text = Equipdata[i].Name; //设置图片 item.transform.Find("Image").GetComponent().sprite = Resources.Load(imagepath + Equipdata[i].PicName, typeof(Sprite)) as Sprite; //设置数量 if (Equipdata[i].IsSelectMore) { item.transform.Find("NUM").gameObject.SetActive(true); item.transform.Find("NUM").GetComponent().text = Equipdata[i].Number.ToString(); } } } ////数量叠加 //else //{ // Transform item = content.Find(Equipdata[i].Name); // if (Equipdata[i].IsSelectMore) // { // Text num = item.transform.Find("NUM").GetComponent(); // num.text = (Equipdata[i].Number + int.Parse(num.text)).ToString(); // } //} } } /// /// 装备更改时刷新UI /// /// IEnumerator Refush(List Equipdata) { yield return new WaitForSeconds(0.05f); Load(Equipdata); } /// /// 当前消防员背包信息修改 /// /// private void BagInfoChange(IMessage obj) { if (gameObject.activeInHierarchy) { GameObject select = (GameObject)obj.Data; if (select == SelectedObjs.selectedCharacters[0]) { Empty(); StartCoroutine( Refush(select.GetComponent().EquipList)); } } } /// /// 打开背包的情况下换选消防员 /// /// private void ChangeSelect(IMessage obj) { if (gameObject.activeInHierarchy) { var gameObjID = (long)obj.Sender; var hitObj = EntitiesManager.Instance.GetEntityByID(gameObjID); if (hitObj.CompareTag("Player")) { Empty(); Refush(hitObj.GetComponent().EquipList); } } } public void ClearAll() { List eqname = new List(); Toggle[] all = content.GetComponentsInChildren(true); for (int i = 0; i < all.Length; i++) { eqname.Add(all[i].name); } MessageDispatcher.SendMessage("DelectEquip", eqname); } public void ClearSelect() { MessageDispatcher.SendMessage("DelectEquip", getClearlistname()); } /// /// 获取要清空的装备的名字的列表 /// /// private List getClearlistname() { List eqname = new List(); Toggle[] all = content.GetComponentsInChildren(); for (int i = 0; i < all.Length; i++) { if (all[i].isOn) { eqname.Add(all[i].name); } } return eqname; } }