1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5
6 [AddComponentMenu(
"UI/Effects/GradientText")]
7 public class GradientText : BaseMeshEffect
8 {
9 [SerializeField]
10 private Color32 topColor =
Color.white;
11
12 [SerializeField]
13 private Color32 bottomColor =
Color.black;
14
15 public override void ModifyMesh(VertexHelper vh)
16 {
17 if (!IsActive() || vh.currentVertCount ==
0)
18 return;
19 List<UIVertex> vertices =
new List<UIVertex>
();
20 vh.GetUIVertexStream(vertices);
21 float bottomY = vertices[
0].position.y;
22 float topY = vertices[
0].position.y;
23 for (
int i =
1; i < vertices.Count; i++
)
24 {
25 if( vertices[i].position.y >
topY) {
26 topY =
vertices[i].position.y;
27 }
28 else if (vertices[i].position.y <
bottomY)
29 {
30 bottomY =
vertices[i].position.y;
31 }
32 }
33 float uiElementHeight = topY-
bottomY;
34 UIVertex v =
new UIVertex();
35 for (
int i =
0; i<vh.currentVertCount; i++
)
36 {
37 vh.PopulateUIVertex(
ref v, i);
38 v.color = Color32.Lerp(bottomColor, topColor, (v.position.y - bottomY) /
uiElementHeight);
39 vh.SetUIVertex(v, i);
40 }
41 }
42 }
转载于:https://www.cnblogs.com/pmsl/p/7615891.html
相关资源:unity UGUI字体渐变程序