using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; /// /// 星星组件类型2 /// 空心星星 /// public class UI_HeroStarComponment2 : MonoBehaviour { /// /// 模型 /// private GameObject mPrefab = null; /// /// 总数码 /// private int _totalNum = -1; /// /// 当前激活数目 /// private int _curNum = -1; /// /// 总数 /// public int totalNum { get { return _totalNum; } set { if (_totalNum != value) { _totalNum = value; onTotalNumChanged(); } } } /// /// 当前数 /// public int curNum { get { return _curNum; } set { if (_curNum != value) { _curNum = value; onTotalNumChanged(); } } } /// /// 节点列表 /// private List elements = new List(); /// /// 显示星星啦啦啦 /// private void onTotalNumChanged() { if (mPrefab == null) { mPrefab = this.transform.Find("prefab").gameObject; mPrefab.GetComponent().ignoreLayout = true; mPrefab.SetActive(false); } elements.Clear(); for (int i = 0; i < this.transform.childCount; i++) { GameObject temp = this.transform.GetChild(i).gameObject; if (temp.name == "prefab") { continue; } else { elements.Add(temp); } } if (elements.Count >= totalNum) { for (int i = 0; i < elements.Count; i++) { GameObject card = elements[i]; if (i < totalNum) { ////已经有了,重新激活就行了 card.GetComponent().ignoreLayout = false; card.SetActive(true); } else { card.GetComponent().ignoreLayout = true; card.SetActive(false); } } } else { ////全部激活 foreach (GameObject card in elements) { card.GetComponent().ignoreLayout = false; card.SetActive(true); } for (int i = elements.Count; i < totalNum; i++) { ////创建新的 GameObject card = (GameObject)Instantiate(mPrefab); card.name = i.ToString(); card.transform.SetParent(this.transform); card.transform.localScale = Vector3.one; card.transform.localPosition = Vector3.zero; card.GetComponent().ignoreLayout = false; card.SetActive(true); elements.Add(card); } } for (int i = 0; i < totalNum; i++) { GameObject card = elements[i]; GameObject selected = card.transform.Find("selected").gameObject; if (i < curNum) { selected.SetActive(true); } else { selected.SetActive(false); } } } }