using System.Collections; using System.Collections.Generic; using UnityEngine; public class FxManagerAdon : MonoBehaviour { /// /// 攻击释放特效数组 /// public Transform[] m_AttackEff; /// /// 攻击弹道特效数组 /// public Transform[] m_TrajectEff; /// /// 攻击爆炸特效数组 /// public Transform[] m_BombEff; /// /// 被击特效数组 /// public Transform[] m_AttackedEff; /// /// 极限闪避提示光效 /// public Transform m_ExtermePointEff; /// /// 死亡光效 /// public Transform[] m_DieEffs; /// /// 眩晕光效 /// public Transform m_DizzEff; // Start is called before the first frame update private void Awake() { //获取攻击特效对象 Transform OBJ = transform.Find("FBX/Effect_000/Attacks"); if(OBJ) { m_AttackEff = new Transform[OBJ.childCount]; for (int i = 0; i < OBJ.childCount; i++) { m_AttackEff[i] = OBJ.GetChild(i); m_AttackEff[i].gameObject.SetActive(false); } } //获取弹道特效对象 OBJ = transform.Find("FBX/Effect_000/Traject"); if (OBJ) { m_TrajectEff = new Transform[OBJ.childCount]; for (int i = 0; i < OBJ.childCount; i++) { m_TrajectEff[i] = OBJ.GetChild(i); m_TrajectEff[i].gameObject.SetActive(false); } } //获取爆炸特效对象 OBJ = transform.Find("FBX/Effect_000/Bomb"); if(OBJ) { m_BombEff = new Transform[OBJ.childCount]; for (int i = 0; i < OBJ.childCount; i++) { m_BombEff[i] = OBJ.GetChild(i); m_BombEff[i].gameObject.SetActive(false); } } //获取被击特效对象 OBJ = transform.Find("FBX/Effect_000/Attackeds"); if(OBJ) { m_AttackedEff = new Transform[OBJ.childCount]; for (int i = 0; i < OBJ.childCount; i++) { m_AttackedEff[i] = OBJ.GetChild(i); m_AttackedEff[i].gameObject.SetActive(false); } } //获取死亡特效对象 OBJ = transform.Find("FBX/Effect_000/Die"); if(OBJ) { m_DieEffs = new Transform[OBJ.childCount]; for (int i = 0; i < OBJ.childCount; i++) { m_DieEffs[i] = OBJ.GetChild(i); m_DieEffs[i].gameObject.SetActive(false); } } m_DizzEff = transform.Find("FBX/Effect_ZhongXin/buff_801028"); m_ExtermePointEff = transform.Find("FBX/Effect_000/ExtermePointEff"); if(m_ExtermePointEff != null) m_ExtermePointEff.gameObject.SetActive(false); } void Start() { } /// /// 播放攻击特效 /// /// 特效对象. /// 特效id. /// 特效位置. /// 角度. /// 生命周期. /// 特效类型. public GameObject PlayAttackEff(int effId,bool bFollowing = false,Transform effParent = null) { GameObject effObj = m_AttackEff[effId].gameObject;//发出特效 effObj.SetActive(true);//启用 if (bFollowing)//跟随 { effObj.transform.parent = effParent; } return effObj; } public void StopAttackEff(int effId) { GameObject effObj = m_AttackEff[effId].gameObject;//发出特效 effObj.SetActive(false);//发送启用事件 } /// /// 播放受击特效 /// /// 特效对象. /// 特效id. /// 特效位置. /// 角度. /// 生命周期. /// 特效类型. public GameObject PlayAttackedEff(int effId, bool bFollowing = false, Transform effParent = null) { if(m_AttackedEff == null) { return null; } //发出特效 GameObject effObj = Instantiate(m_AttackedEff[effId].gameObject); effObj.SetActive(true);//发送启用事件 if (bFollowing)//跟随 { effObj.transform.parent = effParent; effObj.transform.localPosition = Vector3.zero; } return effObj; } /// /// 播放死亡特效 /// /// 特效对象. /// 特效id. /// 特效位置. /// 角度. /// 生命周期. /// 特效类型. public GameObject PlayDieEff(int effId, bool bFollowing = false, Transform effParent = null) { //发出特效 GameObject effObj = Instantiate(m_DieEffs[effId].gameObject); effObj.SetActive(true);//发送启用事件 if (bFollowing)//跟随 { effObj.transform.parent = effParent; effObj.transform.localPosition = Vector3.zero; } else { effObj.transform.position = effParent.position; } return effObj; } public void StopAttackedEff(int effId) { GameObject effObj = m_AttackEff[effId].gameObject;//发出特效 effObj.SetActive(false);//发送启用事件 } /// /// 播放极限闪避提示特效 /// public void PlayExtermePointEff() { m_ExtermePointEff.gameObject.SetActive(false); m_ExtermePointEff.gameObject.SetActive(true);//发送启用 //StartCoroutine(playExtermePointEff()); } }