TransitionDictionaryExample.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace Spine.Unity.Examples {
  5. // This is an example of how you could store animation transitions for use in your animation system.
  6. // More ideally, this would be stored in a ScriptableObject in asset form rather than in a MonoBehaviour.
  7. public sealed class TransitionDictionaryExample : MonoBehaviour {
  8. [System.Serializable]
  9. public struct SerializedEntry {
  10. public AnimationReferenceAsset from;
  11. public AnimationReferenceAsset to;
  12. public AnimationReferenceAsset transition;
  13. }
  14. [SerializeField]
  15. List<SerializedEntry> transitions = new List<SerializedEntry>();
  16. readonly Dictionary<AnimationStateData.AnimationPair, Animation> dictionary = new Dictionary<AnimationStateData.AnimationPair, Animation>();
  17. void Start () {
  18. dictionary.Clear();
  19. foreach (var e in transitions) {
  20. dictionary.Add(new AnimationStateData.AnimationPair(e.from.Animation, e.to.Animation), e.transition.Animation);
  21. }
  22. }
  23. public Animation GetTransition (Animation from, Animation to) {
  24. Animation result;
  25. dictionary.TryGetValue(new AnimationStateData.AnimationPair(from, to), out result);
  26. return result;
  27. }
  28. }
  29. }