AnimationManager.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using James;
  4. /// <summary>
  5. /// Animation管理器
  6. /// </summary>
  7. public class AnimationManager : SingletonObject<AnimationManager>
  8. {
  9. /// <summary>
  10. /// 监听列表
  11. /// </summary>
  12. private List<Animation> s_listenList;
  13. public AnimationManager()
  14. {
  15. s_listenList = new List<Animation>();
  16. }
  17. /// <summary>
  18. /// 添加一个监听
  19. /// </summary>
  20. /// <param name="animation">Animation对象</param>
  21. public void AddListen(Animation animation)
  22. {
  23. s_listenList.Add(animation);
  24. }
  25. /// <summary>
  26. /// 移除一个监听
  27. /// </summary>
  28. /// <param name="animation">Animation对象</param>
  29. public void RemoveListen(Animation animation)
  30. {
  31. s_listenList.Remove(animation);
  32. }
  33. /// <summary>
  34. /// 获取所有监听
  35. /// </summary>
  36. /// <returns>监听对象数组</returns>
  37. public Animation[] GetAllListen()
  38. {
  39. return s_listenList.ToArray();
  40. }
  41. /// <summary>
  42. /// 发送动画播放消息
  43. /// </summary>
  44. /// <param name="clipName">片段名称</param>
  45. public void SenAnimationPlayMessage(string clipName)
  46. {
  47. for (int i = 0; i < s_listenList.Count; i++)
  48. {
  49. Animation item = s_listenList[i];
  50. if (item != null && item.GetClip(clipName) != null)
  51. {
  52. item[clipName].time = 0;//重置动画状态
  53. item.Play(clipName);
  54. }
  55. }
  56. }
  57. }