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