1. 程式人生 > >Unity 2017 文字顏色漸變

Unity 2017 文字顏色漸變

engine per == pri field rtc oid com int

 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 }

技術分享

Unity 2017 文字顏色漸變