RPGEffectManager.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. /// <summary>
  5. /// 特效管理者
  6. /// </summary>
  7. public class RPGEffectManager : MonoBehaviour
  8. {
  9. /// <summary>
  10. /// 特效模板
  11. /// </summary>
  12. private Dictionary<int, GameObject> mEffectTemps = new Dictionary<int, GameObject>();
  13. /// <summary>
  14. /// 单键
  15. /// </summary>
  16. private static RPGEffectManager m_Instance;
  17. /// <summary>
  18. /// 警告圆圈
  19. /// </summary>
  20. private GameObject mWaringCircle = null;
  21. /// <summary>
  22. /// 警告盒子
  23. /// </summary>
  24. private GameObject mWaringBox = null;
  25. /// <summary>
  26. /// 极限闪避提示特效
  27. /// </summary>
  28. private GameObject mShanBiEffect = null;
  29. /// <summary>
  30. /// 单键
  31. /// </summary>
  32. public static RPGEffectManager Instance
  33. {
  34. get
  35. {
  36. if (m_Instance == null)
  37. {
  38. GameObject obj = GameObject.Find("EffectManager");
  39. if (obj)
  40. {
  41. m_Instance = obj.AddComponent<RPGEffectManager>();
  42. }
  43. else
  44. {
  45. Debug.LogError("RPGEffectManager 初始化失败!!!");
  46. }
  47. }
  48. return m_Instance;
  49. }
  50. }
  51. /// <summary>
  52. /// 初始化
  53. /// </summary>
  54. public void Init()
  55. {
  56. mEffectTemps.Clear();
  57. Transform tran = transform.Find("zhandou_beigongji");
  58. if (tran)
  59. {
  60. mEffectTemps.Add(1, tran.gameObject);
  61. }
  62. mWaringCircle = transform.Find("WaringCircle").gameObject;
  63. mWaringBox = transform.Find("WaringBox").gameObject;
  64. mShanBiEffect = transform.Find("tishi_shanbi").gameObject;
  65. // 不知为什么特效不显示,这样处理下就会显示
  66. //GameObject obj = CameraManager.Instance.CameraManagerObj.transform.Find("EffetCamera").gameObject;
  67. //obj.SetActive(false);
  68. //obj.SetActive(true);
  69. }
  70. /// <summary>
  71. /// 创建特效
  72. /// </summary>
  73. /// <param name="id">特效ID</param>
  74. /// <param name="pos">位置</param>
  75. /// <param name="dir">方向</param>
  76. /// <param name="liveTime">生存时间</param>
  77. public void CreateEffect(int id, Vector3 pos, Vector3 dir, float liveTime = 1.0f)
  78. {
  79. if (mEffectTemps.ContainsKey(id))
  80. {
  81. GameObject obj = Instantiate(mEffectTemps[id], pos + Vector3.up + dir * 0.2f, Quaternion.LookRotation(dir), transform);
  82. obj.SetActive(true);
  83. Destroy(obj, liveTime);
  84. }
  85. }
  86. /// <summary>
  87. /// 创建特效
  88. /// </summary>
  89. /// <param name="effectResName">资源名称</param>
  90. /// <param name="pos">位置</param>
  91. /// <param name="dir">方向</param>
  92. /// <param name="liveTime">生存时间</param>
  93. public void CreateEffect(string effectResName, Vector3 pos, Vector3 dir, float liveTime = 1.0f)
  94. {
  95. Transform tran = transform.Find(effectResName);
  96. if (tran)
  97. {
  98. GameObject obj = Instantiate(tran.gameObject, pos, Quaternion.LookRotation(dir), transform);
  99. obj.SetActive(true);
  100. Destroy(obj, liveTime);
  101. }
  102. }
  103. /// <summary>
  104. /// 显示警告圈
  105. /// </summary>
  106. /// <param name="pos">位置</param>
  107. /// <param name="showTime">显示时间</param>
  108. public void ShowWaringCircle(Vector3 pos, float showTime = 3.0f)
  109. {
  110. GameObject obj = Instantiate(mWaringCircle, pos, Quaternion.identity);
  111. obj.SetActive(true);
  112. Destroy(obj, showTime);
  113. }
  114. /// <summary>
  115. /// 显示警告盒
  116. /// </summary>
  117. /// <param name="pos">位置</param>
  118. /// <param name="dir">方向</param>
  119. /// <param name="showTime">显示时间</param>
  120. public void ShowWaringBox(Vector3 pos, Vector3 dir, float showTime = 3.0f)
  121. {
  122. GameObject obj = Instantiate(mWaringBox, pos, Quaternion.LookRotation(dir));
  123. obj.SetActive(true);
  124. Destroy(obj, showTime);
  125. }
  126. /// <summary>
  127. /// 闪避提示
  128. /// </summary>
  129. public void ShouDodgeTip()
  130. {
  131. mShanBiEffect.SetActive(false);
  132. mShanBiEffect.SetActive(true);
  133. }
  134. /// <summary>
  135. /// 隐藏闪避提示
  136. /// </summary>
  137. public void HideDodgeTip()
  138. {
  139. mShanBiEffect.SetActive(false);
  140. }
  141. }