public static void PlayUIEffect(EFFECT_ID id, Transform parent = null, Destroy.FinishCallBack finishEvent = null, InstCallBack instCallBack = null) { EffectMgr.UIEffectInfo uiei = new EffectMgr.UIEffectInfo(); uiei.parent_ = parent; uiei.instCallBack_ = instCallBack; uiei.finCallBack_ = finishEvent; uiei.finished_ = false; EffectAssetMgr.LoadAsset(id, (AssetBundle bundle, ParamData data) => { if (bundle.mainAsset == null) { ClientLog.Instance.LogError("Effect bundle is broken. ID : " + id); return; } data.uiEffectInfo_.bundle_ = bundle; Transform tParent = data.uiEffectInfo_.parent_; if (tParent.Equals(ApplicationEntry.Instance.uiRoot.transform)) { EffectMgr.Instance.uiEffectQue_.Enqueue(data.uiEffectInfo_); } else { GameObject effObj = (GameObject)GameObject.Instantiate(bundle.mainAsset); EffectAssetMgr.DeleteAsset(bundle, false); effObj.transform.parent = data.uiEffectInfo_.parent_; effObj.transform.localScale = Vector3.one; if (data.uiEffectInfo_.instCallBack_ != null) { data.uiEffectInfo_.instCallBack_(effObj); } Destroy de = effObj.GetComponent <Destroy>(); if (de == null) { de = effObj.AddComponent <Destroy>(); de.lifetime = 3f; } de.OnPlayFinish += data.uiEffectInfo_.finCallBack_; } }, new ParamData(uiei)); }
public ParamData(Transform t, Destroy.FinishCallBack callback) { tTransform_ = t; Callback_ = callback; }