using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextGradient : BaseMeshEffect
{
public Color topColor = Color.white;
public Color bottomColor = Color.black;
public bool vertical = true;
public override void ModifyMesh(VertexHelper vh)
{
if (!IsActive()) return;
var vertexList = new List<UIVertex>();
vh.GetUIVertexStream(vertexList);
for (int i = 0; i < vertexList.Count; i += 6)
{
// 左上角是0
// 0,5 1
// |-------|
// | \ |
// | \ |
// | \ |
// |-------| 2,3
// 4
UIVertex UV = vertexList[i + 0];
UV.color = topColor; // 左上
vertexList[i + 0] = UV;
UV = vertexList[i + 1];
UV.color = vertical ? topColor : bottomColor; //右上
vertexList[i + 1] = UV;
UV = vertexList[i + 2];
UV.color = bottomColor; // 右下
vertexList[i + 2] = UV;
UV = vertexList[i + 3];
UV.color = bottomColor; //右下
vertexList[i + 3] = UV;
UV = vertexList[i + 4];
UV.color = vertical ? bottomColor : topColor; // 左下
vertexList[i + 4] = UV;
UV = vertexList[i + 5];
UV.color = topColor; // 左上
vertexList[i + 5] = UV;
}
vh.Clear();
vh.AddUIVertexTriangleStream(vertexList);
}
}
UGUI-Text实现渐变
最新推荐文章于 2024-09-23 23:18:02 发布