using UnityEngine; using System.Collections; using System.Collections.Generic; using Games.Item; public class PopCanSelectItemPanelCtr : MonoBehaviour { public GameObject m_ItemPrefab; public Transform m_Parent; private List m_AllItem = new List(); private List m_AutoMedicItemList = new List(); public List AutoMedicItemList { get { return m_AutoMedicItemList; } } public static PopCanSelectItemPanelCtr Instance; public GameObject posObj; public Transform _posOne; public Transform _posTwo; private void OnEnable() { Instance = this; } private void OnDisable() { Instance = null; m_AllItem.Clear(); } public void SetMyShowList(List m_List, int Type) //1.面板快捷使用药品 2.界面快捷药 { m_AllItem.Clear(); foreach (var item in m_List) { m_AllItem.Add(item); } StartCoroutine(InitMyItem(Type)); posObj.transform.localPosition = Type == 1 ? _posOne.localPosition : _posTwo.localPosition; } //初始化当前可以点击设置的Item IEnumerator InitMyItem(int Type) { yield return new WaitForEndOfFrame(); if (m_AutoMedicItemList.Count < m_AllItem.Count) { var _NeedCreateCount = m_AllItem.Count - m_AutoMedicItemList.Count; for (int index = 0; index < _NeedCreateCount; index++) { GameObject m_PrefabItem = GameObject.Instantiate(m_ItemPrefab); //设置父节点以及缩放位置 m_PrefabItem.transform.parent = m_Parent; m_PrefabItem.transform.localPosition = Vector3.zero;//???? m_PrefabItem.transform.localRotation = Quaternion.Euler(Vector3.zero); m_PrefabItem.transform.localScale = Vector3.one; m_PrefabItem.SetActive(false); m_AutoMedicItemList.Add(m_PrefabItem); } } //隐藏多余的 for (int index = m_AllItem.Count; index < m_AutoMedicItemList.Count; index++) { m_AutoMedicItemList[index].SetActive(false); } //初始化可以显示的 for (int index = 0; index < m_AllItem.Count; index++) { m_AutoMedicItemList[index].SetActive(true); m_AutoMedicItemList[index].GetComponent().InitMyItem(m_AllItem[index], Type); } yield break; } public int sortMyItemList(int a_Id, int b_Id) { GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack; List itemList = ItemTool.ItemFilter(BackPack, 0); //过滤背包中所有物品 存储在ItemList中 bool hasA = false; bool hasB = false; int levelA = -1; int levelB = -1; for(int index = 0; index < itemList.Count; index++) { if(itemList[index].DataID == a_Id) { levelA = itemList[index].GetMinLevelRequire(); hasA = true; continue; } if(itemList[index].DataID == b_Id) { levelB = itemList[index].GetMinLevelRequire(); hasB = true; continue; } if (hasB && hasA) { break; } } if((hasA && hasB) || (!hasA && !hasB)) { if(levelA < levelB) { return -1; }else if(levelA == levelB) { return 0; } else { return 1; } } else if(hasA && !hasB) { return -1; } else if(!hasA && hasB) { return 1; } else { return 0; } } public void closeMyPopCanSelectItemPanel() { //先清除? //for(int index = 0; index < m_AutoMedicItemList.Count; index++) //{ // Destroy(m_AutoMedicItemList[index]); //} ////置为false //// this.gameObject.SetActive(false); UIManager.CloseUI(UIInfo.PopCanSelectItemPanel); } }