TextMeshProUGUIAnimationValue.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. using TMPro;
  3. using UnityEngine;
  4. namespace UnityUIPlayables
  5. {
  6. [Serializable]
  7. public class TextMeshProUGUIAnimationValue
  8. {
  9. [SerializeField] private float _fontSize = 36;
  10. [SerializeField] private Color _color = Color.white;
  11. [SerializeField] private GradientValue _gradient;
  12. [SerializeField] private SpacingValue _spacing;
  13. [SerializeField] private Color _faceColor = Color.white;
  14. [SerializeField] private Color _outlineColor = Color.black;
  15. [SerializeField] private float _outlineWidth;
  16. public float FontSize => _fontSize;
  17. public Color Color => _color;
  18. public VertexGradient VertexGradient => _gradient.GetGradient();
  19. public SpacingValue Spacing => _spacing;
  20. public Color FaceColor => _faceColor;
  21. public Color OutlineColor => _outlineColor;
  22. public float OutlineWidth => _outlineWidth;
  23. [Serializable]
  24. private class GradientValue
  25. {
  26. [SerializeField] private bool _usePreset;
  27. [SerializeField] [EnabledIf(nameof(_usePreset), false)]
  28. private VertexGradient _vertexGradient = new VertexGradient(Color.white);
  29. [SerializeField] [EnabledIf(nameof(_usePreset), true)]
  30. private TMP_ColorGradient _preset;
  31. public VertexGradient GetGradient()
  32. {
  33. if (!_usePreset)
  34. {
  35. return _vertexGradient;
  36. }
  37. if (_preset == null)
  38. {
  39. return new VertexGradient(Color.white);
  40. }
  41. return new VertexGradient(_preset.topLeft, _preset.topRight, _preset.bottomLeft,
  42. _preset.bottomRight);
  43. }
  44. }
  45. [Serializable]
  46. public struct SpacingValue
  47. {
  48. [SerializeField] private float _character;
  49. [SerializeField] private float _line;
  50. [SerializeField] private float _word;
  51. [SerializeField] private float _paragraph;
  52. public float Character => _character;
  53. public float Line => _line;
  54. public float Word => _word;
  55. public float Paragraph => _paragraph;
  56. }
  57. }
  58. }