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