6 [RequireComponent(typeof(Text), typeof(RectTransform))]
7 [AddComponentMenu(
"UI/Effects/Extensions/Curved Text")]
11 private AnimationCurve _curveForText = AnimationCurve.Linear(0, 0, 1, 10);
15 get {
return _curveForText; }
16 set { _curveForText = value; graphic.SetVerticesDirty(); }
20 private float _curveMultiplier = 1;
24 get {
return _curveMultiplier; }
25 set { _curveMultiplier = value; graphic.SetVerticesDirty(); }
28 private RectTransform rectTrans;
32 protected override void OnValidate()
35 if (_curveForText[0].time != 0)
37 var tmpRect = _curveForText[0];
39 _curveForText.MoveKey(0, tmpRect);
41 if (rectTrans ==
null)
42 rectTrans = GetComponent<RectTransform>();
43 if (_curveForText[_curveForText.length - 1].time != rectTrans.rect.width)
50 rectTrans = GetComponent<RectTransform>();
56 rectTrans = GetComponent<RectTransform>();
61 int count = vh.currentVertCount;
62 if (!IsActive() || count == 0)
66 for (
int index = 0; index < vh.currentVertCount; index++)
68 UIVertex uiVertex =
new UIVertex();
69 vh.PopulateUIVertex(ref uiVertex, index);
70 uiVertex.position.y += _curveForText.Evaluate(rectTrans.rect.width * rectTrans.pivot.x + uiVertex.position.x) * _curveMultiplier;
71 vh.SetUIVertex(uiVertex, index);
78 Keyframe tmpRect = _curveForText[_curveForText.length - 1];
79 tmpRect.time = rectTrans.rect.width;
80 _curveForText.MoveKey(_curveForText.length - 1, tmpRect);
override void ModifyMesh(VertexHelper vh)
AnimationCurve CurveForText
override void OnRectTransformDimensionsChange()
Credit Erdener Gonenc - @PixelEnvision.