ugui文字顏色水平漸變
阿新 • • 發佈:2019-02-19
把該指令碼掛載到需要顏色漸變的ugui的text物體上。
using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [AddComponentMenu("UI/Effect/Gradient")] public class Gradient : BaseMeshEffect { [SerializeField] private Color32 leftColor = Color.black; [SerializeField] private Color32 rightColor = Color.black; public override void ModifyMesh(VertexHelper vh) { if (!IsActive()) { return; } var vertextList = new List<UIVertex>(); vh.GetUIVertexStream(vertextList); int count = vertextList.Count; ApplyGradient(vertextList,0,count); vh.Clear(); vh.AddUIVertexTriangleStream(vertextList); } private void ApplyGradient(List<UIVertex> vertexList, int start, int end) { float leftX = 0; float RightX = 0; print(end); for (int i = 0; i < end; i++) { float x = vertexList[i].position.x; if (x > RightX) { RightX = x; } else if (x < leftX) { leftX = x; } } float uiElementWeight = RightX - leftX; for (int i = 0; i < end; i++) { UIVertex uiVertex = vertexList[i]; uiVertex.color = Color32.Lerp(leftColor,rightColor,(uiVertex.position.x-leftX)/uiElementWeight); vertexList[i] = uiVertex; } } }