FacialExpressionManager.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
  2. #pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
  3. using UnityEngine;
  4. namespace Animancer.Samples.Layers
  5. {
  6. /// <summary>
  7. /// Demonstrates how to use layers to play multiple
  8. /// independent animations at the same time on different body parts.
  9. /// </summary>
  10. ///
  11. /// <remarks>
  12. /// <strong>Sample:</strong>
  13. /// <see href="https://kybernetik.com.au/animancer/docs/samples/layers/face">
  14. /// Facial Expressions</see>
  15. /// </remarks>
  16. ///
  17. /// https://kybernetik.com.au/animancer/api/Animancer.Samples.Layers/FacialExpressionManager
  18. ///
  19. [AddComponentMenu(Strings.SamplesMenuPrefix + "Layers - Facial Expression Manager")]
  20. [AnimancerHelpUrl(typeof(FacialExpressionManager))]
  21. [DefaultExecutionOrder(1000)]// Initialize after other scripts have initialized their layers.
  22. public class FacialExpressionManager : MonoBehaviour
  23. {
  24. /************************************************************************************************************************/
  25. [SerializeField] private AnimancerComponent _Animancer;
  26. [SerializeField] private SampleButton _Button;
  27. [SerializeField] private NamedClipTransition[] _Expressions;
  28. private AnimancerLayer _Layer;
  29. /************************************************************************************************************************/
  30. protected virtual void Awake()
  31. {
  32. _Layer = _Animancer.Layers.Add();
  33. _Layer.SetDebugName("Facial Expressions");
  34. _Layer.Play(_Expressions[0]);
  35. for (int i = 0; i < _Expressions.Length; i++)
  36. {
  37. NamedClipTransition expression = _Expressions[i];
  38. _Button.AddButton(
  39. i,
  40. expression.Name,
  41. () => _Layer.Play(expression));
  42. }
  43. }
  44. /************************************************************************************************************************/
  45. }
  46. }