123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- /// <summary>
- /// 特效管理者
- /// </summary>
- public class RPGEffectManager : MonoBehaviour
- {
- /// <summary>
- /// 特效模板
- /// </summary>
- private Dictionary<int, GameObject> mEffectTemps = new Dictionary<int, GameObject>();
- /// <summary>
- /// 单键
- /// </summary>
- private static RPGEffectManager m_Instance;
- /// <summary>
- /// 警告圆圈
- /// </summary>
- private GameObject mWaringCircle = null;
- /// <summary>
- /// 警告盒子
- /// </summary>
- private GameObject mWaringBox = null;
- /// <summary>
- /// 极限闪避提示特效
- /// </summary>
- private GameObject mShanBiEffect = null;
- /// <summary>
- /// 单键
- /// </summary>
- public static RPGEffectManager Instance
- {
- get
- {
- if (m_Instance == null)
- {
- GameObject obj = GameObject.Find("EffectManager");
- if (obj)
- {
- m_Instance = obj.AddComponent<RPGEffectManager>();
- }
- else
- {
- Debug.LogError("RPGEffectManager 初始化失败!!!");
- }
- }
- return m_Instance;
- }
- }
- /// <summary>
- /// 初始化
- /// </summary>
- 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);
- }
- /// <summary>
- /// 创建特效
- /// </summary>
- /// <param name="id">特效ID</param>
- /// <param name="pos">位置</param>
- /// <param name="dir">方向</param>
- /// <param name="liveTime">生存时间</param>
- 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);
- }
- }
- /// <summary>
- /// 创建特效
- /// </summary>
- /// <param name="effectResName">资源名称</param>
- /// <param name="pos">位置</param>
- /// <param name="dir">方向</param>
- /// <param name="liveTime">生存时间</param>
- 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);
- }
- }
- /// <summary>
- /// 显示警告圈
- /// </summary>
- /// <param name="pos">位置</param>
- /// <param name="showTime">显示时间</param>
- public void ShowWaringCircle(Vector3 pos, float showTime = 3.0f)
- {
- GameObject obj = Instantiate(mWaringCircle, pos, Quaternion.identity);
- obj.SetActive(true);
- Destroy(obj, showTime);
- }
- /// <summary>
- /// 显示警告盒
- /// </summary>
- /// <param name="pos">位置</param>
- /// <param name="dir">方向</param>
- /// <param name="showTime">显示时间</param>
- 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);
- }
- /// <summary>
- /// 闪避提示
- /// </summary>
- public void ShouDodgeTip()
- {
- mShanBiEffect.SetActive(false);
- mShanBiEffect.SetActive(true);
- }
- /// <summary>
- /// 隐藏闪避提示
- /// </summary>
- public void HideDodgeTip()
- {
- mShanBiEffect.SetActive(false);
- }
- }
|