public FightUI_HeartItem GetInstance() { FightUI_HeartItem instance = null; if (mCachedInstances != null) { while ((instance == null || instance.Equals(null)) && mCachedInstances.Count > 0) { instance = mCachedInstances.Dequeue(); } } if (instance == null || instance.Equals(null)) { instance = Instantiate <FightUI_HeartItem>(m_HeartItem); } Transform t0 = m_HeartItem.transform; Transform t1 = instance.transform; t1.SetParent(t0.parent); t1.localPosition = t0.localPosition; t1.localRotation = t0.localRotation; t1.localScale = t0.localScale; t1.SetSiblingIndex(t0.GetSiblingIndex() + 1); return(instance); }
private void MainRoleHpChange(float curHp, float maxHp) { int mHp = (int)maxHp; //set hearts while (m_Hearts.Count < mHp) { FightUI_HeartItem item = HeartItem.GetInstance(); item.gameObject.SetActive(true); m_Hearts.Add(item); } for (int i = m_Hearts.Count - 1, j = 1; i >= 0; i--, j++) { bool on = j <= curHp; FightUI_HeartItem item = m_Hearts[i]; item.heart.gameObject.SetActive(on); item.heartbreak.gameObject.SetActive(!on); } ////recycle //foreach (FightUI_HeartItem item in hearts) //{ // HeartItem.CacheInstance(item); //} }
public bool CacheInstance(FightUI_HeartItem instance) { if (instance == null || instance.Equals(null)) { return(false); } if (mCachedInstances == null) { mCachedInstances = new Queue <FightUI_HeartItem>(); } if (mCachedInstances.Contains(instance)) { return(false); } instance.gameObject.SetActive(false); mCachedInstances.Enqueue(instance); return(true); }