using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; /// /// 英雄星级组件 /// public class UI_HeroStarComponment : MonoBehaviour { /// /// 模型 /// private GameObject mPrefab = null; /// /// 当前星星数 /// private int _curStarNum = -1; /// /// 设置 /// public int StarNum { get { return _curStarNum; } set { if (_curStarNum != value) { _curStarNum = value; onStarNumChanged(); } } } /// /// /// public bool isShowAddStarAnimation { get; set; } /// /// 星星对象集合 /// private List elements = new List(); /// /// 显示星星啦啦啦 /// private void onStarNumChanged() { if (mPrefab == null) { mPrefab = this.transform.Find("prefab").gameObject; mPrefab.GetComponent().ignoreLayout = true; mPrefab.SetActive(false); } ////Transform[] all = this.gameObject.GetComponentsInChildren(true); elements.Clear(); for (int i = 0; i < this.transform.childCount; i++) { Transform rc = this.transform.GetChild(i); if (rc.name == "prefab" || rc.name == "star") { continue; } elements.Add(rc.gameObject); } ////foreach (Transform rc in all) ////{ //// if (rc.name == "prefab" || rc.name == "star") //// { //// continue; //// } //// elements.Add(rc.gameObject); ////} if (elements.Count >= StarNum) { for (int i = 0; i < elements.Count; i++) { GameObject card = elements[i]; if (i < StarNum) { Animator ani = card.GetComponent(); if (ani != null) { ani.enabled = false; } ////已经有了,重新激活就行了 card.GetComponent().ignoreLayout = false; card.SetActive(true); } else { card.GetComponent().ignoreLayout = true; card.SetActive(false); } } } else { ////全部激活 foreach (GameObject card in elements) { Animator ani = card.GetComponent(); if (ani != null) { ani.enabled = false; } card.GetComponent().ignoreLayout = false; card.SetActive(true); } for (int i = elements.Count; i < StarNum; 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; Animator ani = card.GetComponent(); if (isShowAddStarAnimation && ani != null) { ani.enabled = true; } else { if (ani != null) { ani.enabled = false; } } card.GetComponent().ignoreLayout = false; card.SetActive(true); } } } }