using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 特效管理者 /// public class RPGEffectManager : MonoBehaviour { /// /// 特效模板 /// private Dictionary mEffectTemps = new Dictionary(); /// /// 单键 /// private static RPGEffectManager m_Instance; /// /// 警告圆圈 /// private GameObject mWaringCircle = null; /// /// 警告盒子 /// private GameObject mWaringBox = null; /// /// 极限闪避提示特效 /// private GameObject mShanBiEffect = null; /// /// 单键 /// public static RPGEffectManager Instance { get { if (m_Instance == null) { GameObject obj = GameObject.Find("EffectManager"); if (obj) { m_Instance = obj.AddComponent(); } else { Debug.LogError("RPGEffectManager 初始化失败!!!"); } } return m_Instance; } } /// /// 初始化 /// public void Init() { mEffectTemps.Clear(); Transform tran = transform.Find("zhandou_beigongji"); if (tran) { mEffectTemps.Add(1, tran.gameObject); } mWaringCircle = transform.Find("WaringCircle").gameObject; mWaringBox = transform.Find("WaringBox").gameObject; mShanBiEffect = transform.Find("tishi_shanbi").gameObject; // 不知为什么特效不显示,这样处理下就会显示 //GameObject obj = CameraManager.Instance.CameraManagerObj.transform.Find("EffetCamera").gameObject; //obj.SetActive(false); //obj.SetActive(true); } /// /// 创建特效 /// /// 特效ID /// 位置 /// 方向 /// 生存时间 public void CreateEffect(int id, Vector3 pos, Vector3 dir, float liveTime = 1.0f) { if (mEffectTemps.ContainsKey(id)) { GameObject obj = Instantiate(mEffectTemps[id], pos + Vector3.up + dir * 0.2f, Quaternion.LookRotation(dir), transform); obj.SetActive(true); Destroy(obj, liveTime); } } /// /// 创建特效 /// /// 资源名称 /// 位置 /// 方向 /// 生存时间 public void CreateEffect(string effectResName, Vector3 pos, Vector3 dir, float liveTime = 1.0f) { Transform tran = transform.Find(effectResName); if (tran) { GameObject obj = Instantiate(tran.gameObject, pos, Quaternion.LookRotation(dir), transform); obj.SetActive(true); Destroy(obj, liveTime); } } /// /// 显示警告圈 /// /// 位置 /// 显示时间 public void ShowWaringCircle(Vector3 pos, float showTime = 3.0f) { GameObject obj = Instantiate(mWaringCircle, pos, Quaternion.identity); obj.SetActive(true); Destroy(obj, showTime); } /// /// 显示警告盒 /// /// 位置 /// 方向 /// 显示时间 public void ShowWaringBox(Vector3 pos, Vector3 dir, float showTime = 3.0f) { GameObject obj = Instantiate(mWaringBox, pos, Quaternion.LookRotation(dir)); obj.SetActive(true); Destroy(obj, showTime); } /// /// 闪避提示 /// public void ShouDodgeTip() { mShanBiEffect.SetActive(false); mShanBiEffect.SetActive(true); } /// /// 隐藏闪避提示 /// public void HideDodgeTip() { mShanBiEffect.SetActive(false); } }