TextAnimationMixer.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using UnityEngine.UI;
  2. namespace UnityUIPlayables
  3. {
  4. public class TextAnimationMixer : AnimationMixer<Text, TextAnimationBehaviour>
  5. {
  6. private readonly GraphicColorMixer _colorMixer = new GraphicColorMixer();
  7. private readonly TextFontSizeMixer _fontSizeMixer = new TextFontSizeMixer();
  8. private readonly TextLineSpacingMixer _lineSpacingMixer = new TextLineSpacingMixer();
  9. public override void SetupFrame(Text binding)
  10. {
  11. base.SetupFrame(binding);
  12. _colorMixer.SetupFrame();
  13. _fontSizeMixer.SetupFrame();
  14. _lineSpacingMixer.SetupFrame();
  15. }
  16. public override void Blend(TextAnimationBehaviour behaviour, float inputWeight, float progress)
  17. {
  18. if (behaviour.ControlColor)
  19. {
  20. _colorMixer.Blend(behaviour.StartValue.Color, behaviour.EndValue.Color, inputWeight, progress);
  21. }
  22. if (behaviour.ControlFontSize)
  23. {
  24. _fontSizeMixer.Blend(behaviour.StartValue.FontSize, behaviour.EndValue.FontSize, inputWeight, progress);
  25. }
  26. if (behaviour.ControlLineSpacing)
  27. {
  28. _lineSpacingMixer.Blend(behaviour.StartValue.LineSpacing, behaviour.EndValue.LineSpacing, inputWeight,
  29. progress);
  30. }
  31. }
  32. public override void ApplyFrame()
  33. {
  34. _colorMixer.ApplyFrame(Binding);
  35. _fontSizeMixer.ApplyFrame(Binding);
  36. _lineSpacingMixer.ApplyFrame(Binding);
  37. }
  38. }
  39. }