using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// UI渐变特效,继承BaseMeshEffect函数
/// </summary>
public class GradientEffect : BaseMeshEffect
{
//设置渐变色
public Color topColor = Color.white;
public Color botttomColor = Color.white;
//重写ModifyMesh函数
public override void ModifyMesh(VertexHelper vh)
{
int count = vh.currentVertCount;
if (count == 0)
{
return;
}
List<UIVertex> vertexs = new List<UIVertex>();
for (int i = 0; i < count; i++)
{
UIVertex vertex = new UIVertex();
vh.PopulateUIVertex(ref vertex, i);
vertexs.Add(vertex);
}
float topX = vertexs[0].position.x;
float bottomX = vertexs[0].position.x;
for (int i = 1; i < count; i++)
{
float x = vertexs[i].position.x;
if (x > topX)
{
topX = x;
}
else if (x < bottomX)
{
bottomX = x;
}
}
float height = topX - bottomX;
for (int i = 0; i < count; i++)
{
UIVertex vertex = vertexs[i];
//颜色插值实现渐变
Color color = Color.Lerp(botttomColor, topColor, (vertex.position.x - bottomX) / height);
vertex.color = color;
vh.SetUIVertex(vertex, i);
}
}
public void SetColor(Color32 color1, Color32 color2)
{
topColor = color1;
botttomColor = color2;
}
}
[UGUI进阶知识十五]图片渐变色
最新推荐文章于 2022-04-26 22:00:00 发布