/// <summary> /// 删除指定特效.. /// </summary> /// <param name="fx">Fx.</param> public void RemoveEffect(EffectFx fx) { if (fx != null) { fx.life = 0; } }
//创建SceneFx... public static EffectFx CreateSceneFx(string name, float life) { GameObject g = new GameObject("FX_" + name); //g.layer = (int)LayerEnum.FX; EffectFx entity = g.AddComponent <EffectFx> (); entity.life = life; return(entity); }
public static EffectFx CreateSceneFx(string name, float life) { GameObject fxObj = new GameObject("FX_" + name); EffectFx entity = fxObj.AddComponent <EffectFx> (); entity._bodyObject = fxObj; entity.life = life; return(entity); }
public void DestroyEffect(EffectFx fx) { if (fx == null) { return; } Log.debug(this, "[EffectManger][DestroyEffect] " + fx.prefabPath); _playingEffect.Remove(fx); Destroy(fx.gameObject); }
/// <summary> /// Attachs the body object to the fx.gameobject. /// </summary> /// <param name="fx">Fx.</param> /// <param name="baseObject">Base object.</param> void AttachBodyObject(EffectFx fx, GameObject baseObject) { Log.debug(this, "[EffectManager][AttachBodyObject] SceneFx " + fx.prefabPath + " prefab " + baseObject); GameObject bodyObject = GameObject.Instantiate(baseObject) as GameObject; bodyObject.transform.parent = fx.transform; bodyObject.transform.localPosition = Vector3.zero; bodyObject.transform.localScale = Vector3.one; bodyObject.transform.localRotation = Quaternion.identity; fx.bodyObject = bodyObject; fx.IsDone = true; //EffectScale.. //TODO: some sprite anmation script... CycleImageAnimation [] ps = fx.gameObject.GetComponentsInChildren <CycleImageAnimation>(); if (ps != null && ps.Length > 0) { //change render camera or something else to do... } //CommonFunction.ChangeLayer(fx.gameObject, fx.gameObject.layer); }
//播放特效,parent 特效对象的父对象, scale 特效缩放比,. public EffectFx PlayEffect(string prefabName, GameObject parent, string extraName = "", float scale = 1, float life = 1, System.Action <EffectFx> loadFinishCallBack = null) { Log.debug(this, "[EffectManger][PlayEffect] play " + prefabName + " parent " + parent + "extraName " + extraName + " scale " + scale + " life " + life); EffectFx fx = EffectManager.CreateSceneFx(extraName, life); fx.transform.parent = null; fx.gameObject.transform.localScale = scale * Vector3.one; fx.scale = scale; fx.gameObject.transform.localRotation = Quaternion.identity; if (parent != null) { fx.transform.parent = parent.transform; } fx.gameObject.transform.localPosition = Vector3.zero; fx.onLoadFinishCallBack = loadFinishCallBack; fx.prefabPath = prefabName; _playingEffect.Add(fx); if (_effectPrefabList.ContainsKey(prefabName) == false) { LoadEffect(prefabName); return(fx); } GameObject baseObject = _effectPrefabList[prefabName]; AttachBodyObject(fx, baseObject); if (loadFinishCallBack != null) { loadFinishCallBack(fx); } return(fx); }