public RewardEffectUi_RewardItem GetInstance() { RewardEffectUi_RewardItem 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 <RewardEffectUi_RewardItem>(m_RewardItem); } Transform t0 = m_RewardItem.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 ShowRewardEffect(GoodsType goods, int count, Vector3 startPos) { if (goods == GoodsType.KEY) { ShowRewardKey(goods, count, startPos); return; } if (goods != GoodsType.GOLD && goods != GoodsType.DIAMOND && goods != GoodsType.CAMPSITE_REWARD) { return; } int effectNum = count > m_RewardEffectNum || count < 0 ? m_RewardEffectNum : count; TokenUI tokenUi = Global.gApp.gUiMgr.GetPanelCompent <TokenUI>(Wndid.TokenUI); if (tokenUi != null) { m_IdEffectCountDic[goods] += effectNum; tokenUi.UnLockById(goods, false, false); for (int i = 0; i < effectNum; i++) { RewardEffectUi_RewardItem rewardEffect = RewardItem.GetInstance(); float radius = 0f; if (effectNum > 1) { radius = Random.Range(m_RewardEffectRadius * 0.2f, m_RewardEffectRadius); } float angle = (float)Random.Range(0, 360); float x = radius * Mathf.Cos(angle); float y = radius * Mathf.Sin(angle); Vector3 effectPos = new Vector3(startPos.x + x, startPos.y + y, startPos.z); rewardEffect.Init(goods, effectPos, startPos, this, tokenUi); } } }
public bool CacheInstance(RewardEffectUi_RewardItem instance) { if (instance == null || instance.Equals(null)) { return(false); } if (mCachedInstances == null) { mCachedInstances = new Queue <RewardEffectUi_RewardItem>(); } if (mCachedInstances.Contains(instance)) { return(false); } instance.gameObject.SetActive(false); mCachedInstances.Enqueue(instance); return(true); }