unity开发程序在一些必要的的程序的时候需要实现一些简单的渐变效果,之前不太懂都是直接让美术那边出图片用图片来代替,用着用着就让工程中多了很多没有必要的图片。后面找到了一种很好优化包的方法就是直接用代码来实现颜色的渐变。
最开始在网上看到了一些设置颜色渐变的都是直接对整体进行颜色设置,后来无意间发现了每个字由6个顶点构成,然后就修改成了下面设置颜色渐变的代码。
public class Gradient : BaseMeshEffect
{
/// <summary>
/// 前的颜色
/// </summary>
public Color32 OneColor = Color.white;
/// <summary>
/// 后的颜色
/// </summary>
public Color32 TwoColor = Color.black;
/// <summary>
/// 设置颜色的方式
/// </summary>
public Whole m_Whole = Whole.Every;
/// <summary>
/// 设置文字的刷新类型
/// </summary>
public GradientType m_GradientType = GradientType.TopToDown;
/// <summary>
/// 每个字的顶点数
/// </summary>
private int m_Everyword = 6;
/// <summary>
///
/// </summary>
/// <param name="vh"></param>
public override void ModifyMesh(VertexHelper vh)
{
if (!IsActive())
{
return;
}
var vertexList = new List<UIVertex>();
vh.GetUIVertexStream(vertexList);
int count = vertexList.Count;
if (count == 0)
{
return;
}
ApplyGradient(vertexList, 0, count);
vh.Clear();
vh.AddUIVertexTriangleStream(vertexList);
}
private void ApplyGradient(List<UIVertex> vertexList, int start, int end)
{
Vector4 temp_Vector = new Vector4
{
leftx = vertexList[0