CombatHeroAnimtion.cs 1.7 KB

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