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());
}
}