public static void PlaySceneEffect(EFFECT_ID id, Vector3 localPos, Transform parent = null, InstCallBack callback = null, bool billboard = false, float offsetY = 0f) { EffectAssetMgr.LoadAsset(id, (AssetBundle bundle, ParamData data) => { if (bundle.mainAsset == null) { ClientLog.Instance.LogError("Effect bundle is broken. ID : " + id); return; } GameObject effObj = (GameObject)GameObject.Instantiate(bundle.mainAsset); EffectAssetMgr.DeleteAsset(bundle, false); effObj.transform.parent = data.tTransform_; effObj.transform.localPosition = new Vector3(localPos.x, localPos.y + offsetY, localPos.z); if (billboard) { effObj.AddComponent <Billboard>(); } if (callback != null) { callback(effObj); } }, new ParamData(parent)); }
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)); }