/// <summary> /// 播放帧特效 /// </summary> /// <param name="effectID">特效 ID</param> /// <param name="parent">特效所在的父物体</param> public IUIFrameEffect Play(string effectID, Transform parent, Vector3 offset = default(Vector3)) { IUIFrameEffect effect = GetFrameEffect(effectID); if (effect == null) { Debug.LogError("Frame Effect \"" + effectID + "\" is not Exist!"); return(null); } counter.Add(effect); counter.Destroy += (arg) => { DestroyEffect(arg); }; effect.SetDestroyEvent((arg) => { if (showingList.Contains(arg)) { showingList.Remove(arg); } }); effect.SetEndEvent((arg) => { arg.gameObject.transform.SetParent(this.parent.transform); if (showingList.Contains(arg)) { showingList.Remove(arg); } if (effectDic.ContainsKey(arg.ToString())) { effectDic[arg.ToString()].Enqueue(arg); } }); effect.gameObject.transform.SetParent(parent); effect.gameObject.transform.localEulerAngles = Vector3.zero; effect.gameObject.transform.localScale = Vector3.one; effect.gameObject.GetComponent <RectTransform>().anchoredPosition3D = offset; (effect as UIFrameEffect).Play(); showingList.Add(effect); return(effect); }
public void Add(IUIFrameEffect effect) { FEItem fei = GetItem(effect.ToString()); if (fei == null) { fei = new FEItem(effect.ToString()); } if (!itemList.Contains(fei)) { itemList.Add(fei); } fei.Add(); fei.DestroyName += (arg) => { if (Destroy != null) { Destroy(arg.ID); } itemList.Remove(arg); }; effect.SetDestroyEvent(SubItem); effect.SetEndEvent(SubItem); }