UGUI_Text_Gradient: GradientLeftToRight / GradientTopToBottom
来源:互联网 发布:mac应用程序卸载不了 编辑:程序博客网 时间:2024/06/01 08:46
using UnityEngine;
using UnityEngine.UI;
[AddComponentMenu ("UI/Effect/GradientLeftToRight")]
public class GradientLeftToRight : 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;
}
}
}
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
[AddComponentMenu ("UI/Effects/GradientTopToBottom")]
public class GradientTopToBottom : BaseMeshEffect
{
[SerializeField]
private Color32
topColor = Color.white;
[SerializeField]
private Color32
bottomColor = Color.black;
public override void ModifyMesh (VertexHelper vh)
{
var vertexList = new List<UIVertex> ();
vh.GetUIVertexStream (vertexList);
int count = vertexList.Count;
ApplyGradient (vertexList, 0, count);
vh.Clear ();
vh.AddUIVertexTriangleStream (vertexList);
}
private void ApplyGradient (List<UIVertex> vertexList, int start, int end)
{
float bottomY = vertexList [0].position.y;
float topY = vertexList [0].position.y;
for (int i = start; i < end; ++i) {
float y = vertexList [i].position.y;
if (y > topY) {
topY = y;
} else if (y < bottomY) {
bottomY = y;
}
}
float uiElementHeight = topY - bottomY;
for (int i = start; i < end; ++i) {
UIVertex uiVertex = vertexList [i];
uiVertex.color = Color32.Lerp (bottomColor, topColor, (uiVertex.position.y - bottomY) / uiElementHeight);
vertexList [i] = uiVertex;
}
}
}
- UGUI_Text_Gradient: GradientLeftToRight / GradientTopToBottom
- svn代码管理中 需要提交哪些文件
- Self join
- 精雕细琢——全方位解析工厂模式
- shell编程关于程序调试一些注意点
- 肖磊看市:剖析比特币交易所监管背后真相,为何取缔并非最佳策略
- UGUI_Text_Gradient: GradientLeftToRight / GradientTopToBottom
- 基于OMAPL138的linux平台8250快速串口实现--UART+EDMA
- finalize()方法解密
- Android APP中卸载其他APP的三种方法
- BZOJ 1150 数据备份Backup
- 关于Google Earth Engine(GEE)学习笔记搬家说明
- 淘宝分布式文件系统TFS设计
- 【前端知识点】你所不了解的Ajax和Http状态字
- Python的学习(二)