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);
}
}
}
}