CombatHeroAnimtion.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Collections.Generic;
  3. using Animancer;
  4. using Animancer.TransitionLibraries;
  5. using Fort23.UTool;
  6. using UnityEngine;
  7. using Utility;
  8. namespace GameLogic.Combat.Hero
  9. {
  10. public class CombatHeroAnimtion : IDisposable
  11. {
  12. public AnimancerComponent AnimancerComponent;
  13. protected Map<string, TransitionAsset> _transitionMap = new Map<string, TransitionAsset>();
  14. public void Init(AnimancerComponent animancer)
  15. {
  16. AnimancerComponent = animancer;
  17. if (AnimancerComponent != null)
  18. {
  19. // AnimancerComponent.GetAnimationClips();
  20. // List<AnimationClip> results = new List<AnimationClip>();
  21. // AnimancerComponent.Transitions.GetAnimationClips(results);
  22. int max = AnimancerComponent.Transitions.Library.Count;
  23. for (int i = 0; i < max; i++)
  24. {
  25. if (AnimancerComponent.Transitions.Library.TryGetTransition(i,
  26. out TransitionModifierGroup transition))
  27. {
  28. TransitionAsset clipTransition2 = transition.Transition as TransitionAsset;
  29. _transitionMap[clipTransition2.name] = clipTransition2;
  30. }
  31. }
  32. }
  33. }
  34. public void Play(string name, float speed = 1)
  35. {
  36. if (!_transitionMap.TryGetValue(name, out TransitionAsset clipTransition))
  37. {
  38. LogTool.Log("没有找到要播放的动画"+name);
  39. return;
  40. }
  41. clipTransition.Speed = speed;
  42. // clipTransition. = isLoop;
  43. AnimancerComponent.Play(clipTransition);
  44. }
  45. public void Dispose()
  46. {
  47. _transitionMap.Clear();
  48. AnimancerComponent = null;
  49. }
  50. }
  51. }