Unity Text 组件颜色渐变

Unity Text 组件颜色渐变

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[AddComponentMenu("UI/Effects/doGradient")]
[RequireComponent(typeof(Text))]
public class Gradient : BaseMeshEffect
{
 [SerializeField] 
 private Color32 topColor = Color.white;
 
 [SerializeField] 
 private Color32 bottomColor = Color.white;
 [Range(0 , 1)]
 center = 0.5f
 
public override void ModifyMesh(VertexHelper vh)
{
  if (!IsActive()) {
   return;
   }
  var count = vh.currentVertCount;
  if(count == 0)
  {
    return;
  }
  var verTex = new List<UIVertex>();
  for( int i = 0; i < count ; i++)
  {
    var  verTex  = new UIVertex();
    vh.PopulateUIVertex(ref verTex , i);
    verTexs.Add(verTex);
  }
  var topY = verTexs[0].position.y;
  var bottomY = verTexs[0].position.y;
  for(int i = 0 ; i < count ; i++)
  {
     var y = varTexs[i].position.y;
     if(y > topY)
     {
     	topY = y ;
     }
     if( y < bottomY)
     {
     	bottomY = y;
     }
  }
  var height = topY - bottomY;
  for(int i = 0 ; i < count ; i++)
  {
     var verTex = verTexs[i]; 
     var color = CenterColor(bottomColor , topColor , (verTex.position.y - bottomY) / height);
     verTex.color = color;
     vh.SetUIVertex(verTex , i);
  }
}

public Color32 CenterColor(Color32 bc , Color32 tc , float time)
{

	if(center == 0)
	{
         return bc;
	}

	if(center == 1)
	{
         return tc;
	}
	var centerColor = Color32.Lerp(bottomColor , topColor , time);
    var resultColor = tc;
    if(time < center)
    {
       resultColor = Color32.Lerp(bottomColor , centerColor , time / center);
    }
    else
    {
    	resultColor = Color32.Lerp(centerColor . topColor , (time - center) / ( 1 - center));
    }
    return resultColor;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值